←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Błąd w opisie klas.

  • +
  • -
csMaster - zdjęcie csMaster 01.06.2018

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 :/

Odpowiedz

  • +
  • -
AwIlL^^ - zdjęcie AwIlL^^ 01.06.2018

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 :)

Odpowiedz