Jump to content
  • 0

Question

Posted

Buna seara. Am o problema la comanda /buycar. As dori cand afiseaza masinile disponibile din baza de date in /buycar sa fie in ordinea pretului nu dupa ID-ul din baza de date.

Asta imi arata masinile doar ca nu in ordinea pretului:

 

new stringzz[2000],stringy[2000];
for(new xf = 0; xf < MAX_PERSONAL_CARS; xf++)
{
  if(Stock[xf][vPrice] > 0 && Stock[xf][vPrice] <= 7000000)
  {
    format(stringy, sizeof(stringy), "%s ($%s)\n", Stock[xf][vName], NumberFormat(Stock[xf][vPrice]));
    strcat(stringzz,stringy);
  }
}
ShowPlayerDialog(playerid, DIALOG_CARBUY2, DIALOG_STYLE_LIST, "Buy a car", stringzz, "Select", "Back");

 

Recommended Posts

  • 0
Posted
2 minutes ago, RWRobiBG said:

Eu ma refeream ca nu e nici o diferenta daca folosesti ++i sau i++ intr-un loop.

Cum adica nu este nici o diferenta? 

if(dialogid == DIALOG_CARBUY)
{
	    if(response)
	    {
	    	if(listitem == 0)
			{
			    new stringzz[2000], stringy[2000];
				for(new xf = 0; xf < MAX_PERSONAL_CARS; xf++)
				{
				    if(Stock[xf][vPrice] > 0 && Stock[xf][vPrice] <= 7000000)
				    {
						format(stringy, sizeof(stringy), "%s ($%s)\n", Stock[xf][vName], NumberFormat(Stock[xf][vPrice]));
  						strcat(stringzz,stringy);
					}
				}
			    ShowPlayerDialog(playerid, DIALOG_CARBUY2, DIALOG_STYLE_LIST, "Buy a car", stringzz, "Select", "Back");
			}
        }
} 

 

  • 0
Posted

Intr-un loop tu cresti pur si simplu o variabila pentru a-se oprii cand acesta ajunge la valoarea definita, ex:

for(new i =0; i < 10; i++)  { printf("%d",i); }

Variabila incepe sa se numere de la 0 si se opreste la 9.

                        

 

 

  • 0
  • Administrator
Posted
1 minute ago, RWRobiBG said:

Eu ma refeream ca nu e nici o diferenta daca folosesti ++i sau i++ intr-un loop.

Ai dreptate.

@LeetRomania nu face asa, pentru ca o sa incepi cu a doua daca pui i = 1, fai mai bine cum faceai inainte si cu modificarile pe care ti le-am spus, doar ca atunci cand atribui valoare in Stock[...] pui Stock[i + 1][...] ca sa incepti de pe pozitia 1 in vector, presupun ca de asta zici tu ca o cumpara pe a doua, ca plecai cu index-ul vectorului de la 1 si sareai prima masina.

  • Upvote 1
  • 0
Posted
public IniStock()
{
	new Cache: result1 = mysql_query (handle, "SELECT * FROM `stock` ORDER BY `Price`");
	for ( new i = 0, j = cache_get_row_count ( ); i != j; i++)
	{
		new x = i;
		cache_get_field_content(i, "ID", result); x = strval(result);
		cache_get_field_content(i, "Stock", result);  Stock[x][vStock] = strval(result);
		cache_get_field_content(i, "Price", result);  Stock[x][vPrice] = strval(result);
		cache_get_field_content(i, "Model", result);  Stock[x][vModel] = strval(result);
		cache_get_field_content(i, "Speed", result);  Stock[x][vSpeed] = strval(result);
		cache_get_field_content(i, "Car", result); format(Stock[x][vName], 32, result);

		systemVariables[dsvehicle]++;
	}
	printf("[script] %d ds loaded.", systemVariables[dsvehicle]);
	cache_delete(result1);
	return 1;
}
CMD:buycar(playerid, params[])
{
	new stringzz[2000],stringy[2000];
	for(new xf = 0; xf < MAX_PERSONAL_CARS; xf++)
	{
		if(Stock[xf][vPrice] > 0 && Stock[xf][vPrice] <= 7000000)
		{
			format(stringy, sizeof(stringy), "%s ($%s)\n", Stock[xf][vName], NumberFormat(Stock[xf][vPrice]));
			strcat(stringzz,stringy);
		}
	}
	ShowPlayerDialog(playerid, DIALOG_CARBUY2, DIALOG_STYLE_LIST, "Buy a car", stringzz, "Select", "Back");
	return 1;
}
La ondialogresponse
if(dialogid == DIALOG_CARBUY2)
{
	if(!response) return 1;
	if(listitem >= 0)
	{
		Functia care iti inserteaza masina sa zicem ca ai asa.
		InsertCar(playerid, Stock[listitem][vModel],Stock[listitem][vPrice]);
	}
}

Nu are ce sa nu mearga.

                        

 

 

  • 0
Posted

P.S: In caz ca in baza de date id-ul nu incepe de la 0 ci de la 1, foloseste asta:

for ( new i = 1, j = cache_get_row_count ( ); i != j; i++)

si schimba new x = i cu new x = i - 1;

 

  • Upvote 1

                        

 

 

  • 0
Posted
8 minutes ago, WopsS said:

Ai dreptate.

@LeetRomania nu face asa, pentru ca o sa incepi cu a doua daca pui i = 1, fai mai bine cum faceai inainte si cu modificarile pe care ti le-am spus, doar ca atunci cand atribui valoare in Stock[...] pui Stock[i + 1][...] ca sa incepti de pe pozitia 1 in vector, presupun ca de asta zici tu ca o cumpara pe a doua, ca plecai cu index-ul vectorului de la 1 si sareai prima masina.

Am facut cum ai spus tu si apare corect in /buycar si toate astea. De la mine ai +1. Multumesc mult de ajutor.

O mica problema mai este. De ce cand editez pretul masinii din joc, pretul se updateaza in baza de date dar in /buycar nu?

  • 0
  • Administrator
Posted

Haideti sa pastram totul intr-un topic separat, o sa creez eu altul automat.

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.