←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Rozpisanie linii

  • +
  • -
misio3210 - zdjęcie misio3210 26.11.2016

Witam, czy mógłby ktoś rozpisać mi co oznacza poszczególna wartość w owej linii?

 

otóż z tego co widzę w tej kodzie poniżej jest błąd z "pojemnością" tablicy a dokładniej w precache_model(Data[3]);


	new Line[128], Data[5][64], Len;
	AllWeapon++;


		for(new i; i < file_size(SkinFile, 1); i++)
		{
			read_file(SkinFile, i, Line, 127, Len);
			
			if(strlen(Line) < 5 || Line[0] == ';')
				continue;
			
			parse(Line, Data[0], 31, Data[1], 31, Data[3], 47, Data[4], 31);
			
			Weapons[AllWeapon] = str_to_num(Data[0]);
			copy(WeaponNames[AllWeapon], 31, Data[1]);
			
			if(ValidMdl(Data[3])) {
				precache_model(Data[3]);
				copy(WeaponMdls[AllWeapon], 47, Data[3]);
			}
			
			WeaponDrop[AllWeapon] = str_to_num(Data[4]);
			AllWeapon++;
		}

Użytkownik misio3210 edytował ten post 26.11.2016 01:03
Odpowiedz

  • +
  • -
Albertd - zdjęcie Albertd 26.11.2016

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"

 

Odpowiedz