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
CoD Nowy

Błąd w opisie klas.

cod nowy

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 01.06.2018 14:51

Dodałem do silnika cod moda frakcje sczytywane z pliku cod_frakcje.ini, przy tym też do opisów klas.

Jeśli chce zobaczyć opis klasy, wybieram frakcje i ostatnią klase z byle jakiej frakcji, serwer pokazuje błąd "index out of bounds" w tej linijce:
 

if((1<<i) & bronie_klasy[idclass])

Gdzie w tym kodzie jest błąd ?

 

Spoiler

 

Opisy klas ogólnie działają. Nie działają tylko te opisy, jeśli wybiorę ostatnią klasę z jakiejś frakcji.

Tablica bronie_klasy ma wielkosc "[MAX_ILOSC_KLAS+1]" czyli "[101]", więc już sam nie wiem co tu jest żle. Klas jest 13 a frakcji 3 a nie przekracza to limitu 100 klas :/


  • +
  • -
  • 0

#2 AwIlL^^

    Magiczny Gość

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:263
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Gdańsk
Offline

Napisano 01.06.2018 15:16

całkiem normalne, że tak się dzieje
załóżmy, że masz w menu 7 opcji
siódma opcja ma item = 6
zwiększasz item o 1 i wychodzi 7, po czym pobierasz dane opcji, która nie istnieje, więc idclass przyjmuje wartość 0
potem odejmujesz 1 i masz wartość -1
potem próbujesz pobrać dane z tablicy pod indeksem -1 kiedy indeksowanie zaczyna się od 0
i tak właśnie powstaje przekroczenie tablicy :D

usuń te dwa plusiki po item:

if(item++ == MENU_EXIT)

tam jest pierwszy błąd

drugi błąd jest tutaj:

idclass--;

usuń tą całą linijkę

jak zrobisz dokładnie tak jak napisałem to gwarantuję ci poprawne działanie :)


  • +
  • -
  • 1

Potrzebujesz porad do amxx?? Pisz na [PW]






Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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