Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] poprawa kodu z menu


Najlepsza odpowiedź radim, 15.08.2014 22:05

 

if(punkty[33] => 1000);

Pierwsze co mi przyszło do głowy. Tak w ogóle to czy tam nie powinno być ID gracza zamiast 33?

 

 

zamieniłem i:

sklep.smax(65) : error 032: array index out of bounds (variable "punkty")
sklep.smax(65) : warning 215: expression has no effect
sklep.smax(65) : error 001: expected token: ";", but found ")"
sklep.smax(65) : error 029: invalid expression, assumed zero
sklep.smax(65) : fatal error 107: too many error messages on one line

Usuń średnik ";" z końca tej linijki i zamiast '33' powinien być index gracza, w tym przypadku 'id'.

Przejdź do postu


  • Zamknięty Temat jest zamknięty
11 odpowiedzi w tym temacie

#1 Oporowiec

    Wszechobecny

  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 11.08.2014 12:06

siema

mógłby mi ktoś poprawić ten kod ?

public FunkcjaSklepu(id,menu,item)
{
	
	if(item==MENU_EXIT)
	{
		menu_destroy(menu)
	}
	
	new data[6], iName[64]
	new access, callback
	new punkty[33];
	
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	
	new key = str_to_num(data)
	
	switch(key)
	{
	case 1 : 
		{
			if(punkty[33] >= 1000);
			{
				punkty[id] -= 1000;
				set_user_health(id, 255)
				ColorChat(id, GREEN, "%s^x01 Zakupiles^x03 =255HP^x01.", prefix);
			}
		}
	}
} 

podczas kompilacji błąd pokazuje w tej linii:

if(punkty[33] >= 1000);

Dodam też, że gdy nie ma warunku wszystko ładnie się kompiluje.

 

@edit.

błędy: 

sklep.sma(63) : error 032: array index out of bounds (variable "punkty")
sklep.sma(63) : error 036: empty statement

dasiek (11.08.2014 12:11):
Jaki błąd, co jest nie tak.
to miałem na myśli prosząc o więcej informacji. -.-

Użytkownik RPK. Macior edytował ten post 11.08.2014 12:21

Aktualny projekt: Dokumentacja Offline || [ 10% ]


#2 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 11.08.2014 12:21

if(punkty[33] => 1000);

Pierwsze co mi przyszło do głowy. Tak w ogóle to czy tam nie powinno być ID gracza zamiast 33?


  • +
  • -
  • 1

#3 Oporowiec

    Wszechobecny

  • Autor tematu
  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 11.08.2014 12:23

if(punkty[33] => 1000);

Pierwsze co mi przyszło do głowy. Tak w ogóle to czy tam nie powinno być ID gracza zamiast 33?

 

 

zamieniłem i:

sklep.smax(65) : error 032: array index out of bounds (variable "punkty")
sklep.smax(65) : warning 215: expression has no effect
sklep.smax(65) : error 001: expected token: ";", but found ")"
sklep.smax(65) : error 029: invalid expression, assumed zero
sklep.smax(65) : fatal error 107: too many error messages on one line

Aktualny projekt: Dokumentacja Offline || [ 10% ]


#4 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 11.08.2014 12:24

W takim wypadku poprzedni warunek był OK. Pytam się jeszcze raz, czy tam nie powinno być ID gracza?

 

//EDIT

 

Tworząc tablicę, która ma 33 komórki, są one numerowane od 0 do 32, więc jeśli wpiszesz tam 33 to zawsze będzie index out of bounds.


  • +
  • -
  • 1

#5 Oporowiec

    Wszechobecny

  • Autor tematu
  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 11.08.2014 12:27

W takim wypadku poprzedni warunek był OK. Pytam się jeszcze raz, czy tam nie powinno być ID gracza?

o jaaa xD
tak, powinno być id :D

teraz się kompiluje ale:

sklep.smax(65) : warning 211: possibly unintended assignment
sklep.smax(65) : error 029: invalid expression, assumed zero
sklep.smax(65) : warning 215: expression has no effect
sklep.smax(65) : error 001: expected token: ";", but found ")"
sklep.smax(65) : error 029: invalid expression, assumed zero
sklep.smax(65) : fatal error 107: too many error messages on one line

Aktualny projekt: Dokumentacja Offline || [ 10% ]


#6 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 15.08.2014 12:31

sklep.smax(65) : error 001: Powinno zwracać: ";", a zwraca ")" // dodaj ; na koncu linii

Użytkownik Nltj edytował ten post 15.08.2014 12:32

  • +
  • -
  • 0

#7 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 15.08.2014 22:05   Najlepsza odpowiedź

 

if(punkty[33] => 1000);

Pierwsze co mi przyszło do głowy. Tak w ogóle to czy tam nie powinno być ID gracza zamiast 33?

 

 

zamieniłem i:

sklep.smax(65) : error 032: array index out of bounds (variable "punkty")
sklep.smax(65) : warning 215: expression has no effect
sklep.smax(65) : error 001: expected token: ";", but found ")"
sklep.smax(65) : error 029: invalid expression, assumed zero
sklep.smax(65) : fatal error 107: too many error messages on one line

Usuń średnik ";" z końca tej linijki i zamiast '33' powinien być index gracza, w tym przypadku 'id'.


  • +
  • -
  • 1

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#8 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 15.08.2014 23:03

public FunkcjaSklepu(id,menu,item)
{
	
	if(item==MENU_EXIT)
	{
		menu_destroy(menu)
	}
	
	new data[6], iName[64]
	new access, callback
	new punkty[33];
	
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	
	new key = str_to_num(data)
	
	switch(key)
	{
	case 1 : 
		{
			if(punkty[33] >= 1000);
			{
				punkty[id] -= 1000;
				set_user_health(id, 255)
				ColorChat(id, GREEN, "%s^x01 Zakupiles^x03 =255HP^x01.", prefix);
			}
		}
	}
} 

Patrząc na ten kod skąd plugin ma wiedzieć jaką wartość ma "punkty" ? Lokalne zmienne same się nie zadeklarują musisz zrobić to ręcznie.

[33] jest rozmiarem tablicy w tym przypadku 32 + 1 pusty slot-bajt

 

Nie możesz podać 33 w np set_user_health tylko max 32 (w praktyce jest to index gracza od 0 (Wszyscy lub w get_user_name nazwa serwera) do 32, czyli praktycznie rzecz biorąc są tu 33 elementy) dlatego podaje się właśnie 33 przy deklarowaniu tablicy dla ID.

 

33 slot w zmiennej punkty[33] musi być pusty bo zarezerwowany jest dla pawna i musi zawierać pusty bajt (nwm dlatego ale tak musi być)

set_user_health(0, 255) // daje wszystkim 255 hp
ColorChat(id, GREEN, "%s^x01 Postawiles wszystkim^x03 =255HP^x01.", prefix);

Informacje tu zawarte mogą być nieprawdziwe, gdyż dop się uczę :3


Użytkownik Nltj edytował ten post 15.08.2014 23:30

  • +
  • -
  • 2

#9 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 15.08.2014 23:37

edytować poprzedniego postu nie moge chciałbym sprostować (w praktyce jest to index gracza od 0 (SERWER lub w niektórych zmiennych wszyscy gracze na serwerze) do 32)


  • +
  • -
  • 2

#10 Niide

    *** it I'm done

  • Użytkownik

Reputacja: 86
Zaawansowany

  • Postów:216
  • Imię:Paweł
  • Lokalizacja:Holandia
Offline

Napisano 16.08.2014 17:28

BTW. Dlaczego tworzysz zmienną punkty w

public FunkcjaSklepu(id,menu,item)

Czy punkty w ten sposób nie będą równe 0 (bo nie przypisujesz dalej wartości do tej zmiennej) i nie będziesz miał 1000 punktów do kupienia hp?


Użytkownik Niide edytował ten post 16.08.2014 17:31

  • +
  • -
  • 1

kP8HWV.png


#11 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 16.08.2014 17:34

BTW. Dlaczego tworzysz zmienną punkty w

public FunkcjaSklepu(id,menu,item)

Czy punkty w ten sposób nie będą równe 0 (bo nie przypisujesz dalej wartości do tej zmiennej) i nie będziesz miał 1000 punktów do kupienia hp?

Cenna uwaga, jak Ty w taki sposób naliczasz te punkty dla gracza? Punkty[33] powinno być zmienną globalną i coś powinieneś jeszcze z nią robić w innej funkcji.


  • +
  • -
  • 1

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#12 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 16.08.2014 19:27

No to właśnie to opisałem w moim poście xdd


  • +
  • -
  • 2




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych