Tworzysz tablice :
Data[5][64]
a pozniej wykorzystujesz tylko po 31 lub 47 elementow, gdzie tu sens?
parse(Line, Data[0], 31, Data[1], 31, Data[3], 47, Data[4], 31);
Zmien na:
parse(Line, Data[0], sizeof(Data[]), Data[1], sizeof(Data[]), Data[3], sizeof(Data[]), Data[4], sizeof(Data[]));
Pozatym ostatnii wczytywany argument to liczba
WeaponDrop[AllWeapon] = str_to_num(Data[4]);
A na wczytanie jego przeznaczasz tablice o dlugosci 64 znakow co jest bezsensu bo liczba nie moze byc na tyle dluga.
Proponuje to zmienic skoro nie wczytujesz stringu, czyli ciagu znakow, oczywiscie nie jest to blad.
W linijce ktorej napisales nie ma zadnego bledu z "pojemnoscia"