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

Zbyt mała tablica pod HudMSG.


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

#1 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 21.04.2011 09:19

Witam, mam problem z HudMSG
Mam funkcje która wyświetla co x sekund hud.
Niestety w logach spamuje

L 04/21/2011 - 08:16:44: [AMXX] Run time error 4: index out of bounds


Z tego oznacza że moja 'tablica' z hudem jest wieksza niż ją zadeklarowałem.
A z tego co wiem nie jestem pewien czyżby HudMSG miał ograniczona ilość znaków?

Kod

set_hudmessage(0, 255, 0, 0.0, 0.2, 0, 6.0, 2.0);
show_hudmessage(id,"Klasa : [ %s ]^nHP : [ %d ]^nAP : [ %d ]^nLevel : [ %d ]^nExp : [ %d / %d ]^nRanga [ %d ]",get_user_team(id) == 1 ? "Zombi" : "Czlowiek",get_user_health(id),BB_get_user_ap(id),player_lvl[id],player_exp[id],player_exp[Levels[player_lvl[id]]-player_exp[id]],Rangi[player_lvl[id]]);


Chciałbym dowiedzieć się jak mógłbym to naprawić aby hud się wyświetlał i nie było problemów z tym.


Pozdrawiam Muzzi
Za pomoc ofc. leci +

Użytkownik Muzzi edytował ten post 21.04.2011 09:20

  • +
  • -
  • 1

#2 Goliath

    Godlike

  • Przyjaciel

Reputacja: 1 237
Godlike

  • Postów:2 334
  • GG:
  • Steam:steam
  • Imię:Maciej
  • Lokalizacja:Mońki
Offline

Napisano 21.04.2011 09:24

index out of bounds
Czyli index gracza jest nieprawidłowy. Dodaj na początku funkcji:
if(!is_user_connected(id))
return PLUGIN_CONTINUE;

Użytkownik Goliath edytował ten post 21.04.2011 09:25

  • +
  • -
  • 1

#3 Muzzi

    Guru

  • Autor tematu
  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 21.04.2011 09:31

Aj, ale wtopa.
Mój błąd, nie pomyślałem. Działa.
Dzięki leci +
Temat do zamknięcia
  • +
  • -
  • 1

#4 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 21.04.2011 09:32

Index out of bounds nie oznacza że tablica huda jest za mała tylko to że wleciałeś na taki index tablicy który nie istnieje. Tablice jakie masz tu to :

player_lvl[id]
player_exp[id]
player_exp[Levels[player_lvl[id]]-player_exp[id]]
Rangi[player_lvl[id]]

Nie wiem skąd bierzesz ID ale jeśli z pętli to zrobiłeś podstawowy błąd programisty tzw. "Błąd zliczenia o jeden".
ale najprawdopodobniej zrobiłeś błąd tu : player_exp[Levels[player_lvl[id]]-player_exp[id]]
Skoro tablica player_exp ma tablicę w indexach 0 - 32 (włącznie) to jeśli tablica Levels od player_lvl[id] - player_exp[id] zwróci wartość < 0 || > 32 to wtedy otrzymujesz ten piękny błąd.

Użytkownik Knopers edytował ten post 21.04.2011 09:33
Jak zwykle spóźniony Fuck !!!

  • +
  • -
  • 1

#5 Muzzi

    Guru

  • Autor tematu
  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 21.04.2011 09:34

Knopers, akurat to działa.
Poprostu nie odejmowałem od id numeru TASK'a.
Przez to indexy wychodziło takie 'dziwne', plus nie sprawdzało zawsze czy gracz jest na serwerze itp.

Użytkownik Muzzi edytował ten post 21.04.2011 09:35

  • +
  • -
  • 1




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

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