Skocz do zawartości
KrzychuBiceps

Problem z konsolą

Rekomendowane odpowiedzi

Witam mam problem z konsolą

main()
{
	//new Skrypty[];
	new Obiekty[MAX_OBJECTS];
	new Samochody[MAX_VEHICLES];
	new Gracze[MAX_PLAYERS];
	//new Weather[];
	print("================================");
	print("==Serwer uruchomiony pomyslnie==");
	printf("==Ilosc wgrancyh slryptow: %d=="/*, Skrypty*/);
	printf("==Ilosc obiektow w GameMode: %d==", Obiekty);
	printf("==Ilosc pojazdow w GameMode: %d==", Samochody);
	printf("==Gracze Online na serwerze: %d==", Gracze);
	printf("==Obecna pogoda na serwerze: %s=="/*, Wather*/);
	print("================================");
}

pokazuje 0 ale jak dodałem pojazd to tez pokazuje 0 co źle zrobiłem ? a może nie powinno być tych MAXÓW. nie robiłem tego nigdy ale jak widać nie potrafię xD

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Co to za sens? Tworzysz new'a, który ma 0 i dziwisz się, że pokazuje 0? Także przypisujesz go pod liczby z tablicy, więc musisz użyć jakiejś liczby z nawiasu kwadratowego. Te Twoje "maxy" pokazują ile maksymalnie może być czegoś. Możesz zrobić licznik, by to policzyć ile obecnie jest "stworzonych".

Edytowane przez DaGaXeR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
4 godziny temu, DaGaXeR napisał:

Co to za sens? Tworzysz new'a, który ma 0 i dziwisz się, że pokazuje 0? Także przypisujesz go pod liczby z tablicy, więc musisz użyć jakiejś liczby z nawiasu kwadratowego. Te Twoje "maxy" pokazują ile maksymalnie może być czegoś. Możesz zrobić licznik, by to policzyć ile obecnie jest "stworzonych".

tablice np na górze new Cars; a w OnGameModeInit Cars[1] = CreateVehicle(450, 0.0, 0.0, 0.0, 0.0, 0, 0, 0); i tam Cars ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

main() jest wykonywane na stracie skryptu więc jeżeli zdeklarowałeś jakieś tablice na samochody i stworzyłeś samochody (najwcześniej w OnGameModeInit()) to i tak nie zostaną one stworzone przed wykonaniem main(). Jak chcesz podsumowanie tego co jest w skrypcie to wrzuć ja na sam dół OnGameModeInit() po tym jak stworzysz wszystko co potrzebujesz w tym callbacku.

No a samo wyświetlanie jest również źle napisane. Nie możesz zdeklarować tablicy i potem próbować jej wyświetlić. Możesz wyświetlić wartość na konkretnym indexie tej tablicy. Nie możesz też zdeklarować tych tablic w środku main() bo będą poza zakresem (scope) w innych elementach kodu. Zdeklaruj je na górze skryptu.

Przykład tworzenia 5 przypadkowych pojazdów i obiektów ze statystykami:
 

#include <a_samp>
  
#ifdef MAX_CARS
  #undef MAX_CARS
#endif
#define MAX_CARS 100
  
#ifdef MAX_OBJECTS
  #undef MAX_OBJECTS
#endif
#define MAX_OBJECTS 1000
  
new Cars[MAX_CARS];
new Objects[MAX_OBJECTS];
  
public OnGameModeInit() {
  new car_idx = 0;
  new obj_idx = 0;
  
  for(new i = 0; i < 5; i++) {
    Cars[car_idx] = CreateVehicle(400+i, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0);
    car_idx++ ;
    
    Objects[obj_idx] = CreateVehicle(1000+i, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0);
    obj_idx++ ;
  }
  
  printf("Załadowano %d pojazdów", car_idx+1);
  printf("Załadowano %d obiektów", obj_idx+1);
  
  return 1;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

GM.pwn(12) : error 031: unknown directive - #ifdef MAX_CARS
GM.pwn(13) : error 017: undefined symbol "MAX_CARS" - #undef MAX_CARS
GM.pwn(13) : error 010: invalid function or declaration - #undef MAX_CARS
GM.pwn(14) : error 026: no matching "#if..." - #endif
GM.pwn(17) : error 031: unknown directive - #ifdef MAX_OBJECTS
GM.pwn(19) : error 026: no matching "#if..."- #endif

Edytowane przez KrzychuBiceps

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mój błąd. Zmień "#ifdef" na "#if defined".

Mam nadzieje, że nie przekopiowałeś tego kodu, który Ci wysłałem tylko wyciągnąłeś z niego wnioski i napisałeś swoją wersje pod swój system.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeżeli chcesz tylko liczyć ile stworzyłeś pojazdów, obiektów czy czegoś tam, najłatwiej będzie

//Global var
new VehCount = 0;
stock CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay, addsiren=0)
{

	new i = CreateVehicle(modelid, x, y, z, angle, color1, color2, respawn_delay, addsiren);
	if(i != INVALID_VEHICLE_ID)
		VehCount++;
	return i;
}

stock DestroyVehicleEx(vehicleid)
{
	new x = DestroyVehicle(vehicleid);
	if(x != 0)
		VehCount--;
	return x;
}

I używaj CreateVehicleEx, DestroyVehicleEx, jeżeli chcesz zrobić jakiś rozbudowany system to najlepiej zobacz co Ci tam @Sim00n podrzucił.

Możesz też zrobić to co dałem bez używania podanych stocków

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×