←  Pytania dotyczące pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Czytanie danych z pliku.

Locked

  • +
  • -
Black004's Photo Black004 15.02.2020

Cześć, wie ktoś może jak zrobić, aby dane które wyczytuje z pliku w taki sposób:

	for(new i=0;read_file(szFile, i, szLine, 149, iLen);i++){
		trim(szLine);
		if(szLine[0]=='^0' || szLine[0]==';') continue;
		

		parse(szLine, szRare, 15,szSrc, 64, szName, 32, szChance, 7);
				SkinWeaponId[gun_num] = str_to_num(szRare);
				copy(SkinSrc[SkinWeaponId[gun_num]][gun_num], 63, szSrc);
				copy(SkinName[SkinWeaponId[gun_num]][gun_num], 32, szName);
				SkinChance[SkinWeaponId[gun_num]][gun_num] = str_to_float(szChance);
			gun_num++;
	}

Były segregowane id danego skina? Czyli:

 

W pliku mam np:

"1 (id broni)" "sciezka123" "nazwa123" "4.24" //skin 1
"1" "sciezka123" "nazwa123" "4.24" //skin 2
"2" "sciezka321" "nazwa321" "2.56" //skin 1
"1" "sciezka123" "nazwa123" "4.24" //skin 3
"2" "sciezka321" "nazwa321" "1.84" //skin 2
"1" "sciezka321" "nazwa321" "5.16" //skin 4

I chce żeby zmienna np. SkinChance wyglądała tak:

SkinChance[1 (id broni)][1(od 1 numeruje skiny)] = 4.24
SkinChance[1][2] = 4.24
SkinChance[2][1] = 2.56
SkinChance[1][3] = 4.24
SkinChance[2][2] = 4.24
SkinChance[1][4] = 5.16

Po prostu nie chce, aby wyszła taka sytuacja:

SkinChance[1][1] = 4.24
SkinChance[1][2] = 4.24
SkinChance[2][3] = 2.56
SkinChance[1][4] = 4.24
SkinChance[2][5] = 4.24
SkinChance[1][6] = 5.16

Jak zaczyna jest nowe id skina ma ta 2 tablice zaczynac się od nowa lub tylu ilu wcześniej się skończyła. Nie wiem jak to mam zrobić ktoś pomoże? :/

 

 

 

 

 

 

 

 


Edited by Black004, 15.02.2020 22:39.
Quote

  • +
  • -
Robiin's Photo Robiin 16.02.2020

Nie rozumiem problemu. Być może to przez sposób w jaki to wszystko opisałeś, ciężko się połapać o co chodzi. Wyjaśnij lepiej, a najlepiej daj jakiś przykład.

 

Dodatkowo, tak z góry rzucę pomysłem dynamicznych tablic. Mogą się przydać do takiego zadania.

Quote

  • +
  • -
Black004's Photo Black004 16.02.2020

Spróbuje jeszcze raz :P

 

Kod (troche ulepszony):

	new szLine[150], iLen=0, szName[33], szChance[8],szRare[16],szSrc[64], SkinWeaponId;
	log_amx("|=============================================|");
	for(new i=0;read_file(szFile, i, szLine, 149, iLen);i++){
		trim(szLine);
		if(szLine[0]=='^0' || szLine[0]==';') continue;
		
				parse(szLine, szRare, 15,szSrc, 64, szName, 32, szChance, 7);
				SkinWeaponId = str_to_num(szRare);
				copy(SkinSrc[SkinWeaponId][gun_num], 63, szSrc);
				copy(SkinName[SkinWeaponId][gun_num], 32, szName);
				SkinChance[SkinWeaponId][gun_num] = str_to_float(szChance);
			gun_num++;
	}

Więc tak teraz jak dane będą czytane z pliku będzie to wyglądać np:

SkinWeaponId = 1 (numer broni, jak akurat wybrałem, że będę zaczynać od 1, żeby później z menu i innymi rzeczami nie mieć problemów przez 0)
SkinSrc[1][1 (gun_num - numer skina)] = (sciezka do skina)
SkinName[1][1]  = (nazwa skina)
SkinChance[1][1] = (szansa na drop skina)

No i będzie tak dalej:

gun_num = 1

SkinWeaponId = 1
SkinSrc[SkinWeaponId][gun_num]
SkinName[SkinWeaponId][gun_num] 
SkinChance[SkinWeaponId][gun_num] 
gun_num = 2


SkinWeaponId = 1 (tu znowu pobiera jakie jest wpisane id skina)
SkinSrc[SkinWeaponId][gun_num]
SkinName[SkinWeaponId][gun_num] 
SkinChance[SkinWeaponId][gun_num] 

Tu podam przykład jak nie chce, żeby było:

gun_num = 3

SkinWeaponId = a tutaj będzie się równać już 2.
SkinSrc[SkinWeaponId][gun_num]
SkinName[SkinWeaponId][gun_num] 
SkinChance[SkinWeaponId][gun_num] 

i w 2 tablicy są same trojki, a ja chce żeby jak jest nowy numer broni to zaczynało się znowu od 1, czyli:

gun_num = 1

SkinWeaponId = 2
SkinSrc[SkinWeaponId][gun_num]
SkinName[SkinWeaponId][gun_num] 
SkinChance[SkinWeaponId][gun_num] 

A jak znów SkinWeaponid pobierze 1, to ma się zacząć na tylu ilu wcześniej się skończyło, czyli:

gun_num = 3

SkinWeaponId = 1
SkinSrc[SkinWeaponId][gun_num]
SkinName[SkinWeaponId][gun_num] 
SkinChance[SkinWeaponId][gun_num] 

Bo teraz jest, że wartość gun_num będzie rosła, a ja ustawiłem limit skinów na numer broni 8, więc teraz wychodzi poza zakres tablicy, mam nadzieję, że już lepiej wytłumaczyłem nie wiem jak to moge zrobić lepiej xD

 

 


Edited by Black004, 16.02.2020 08:18.
Quote

  • +
  • -
Black004's Photo Black004 16.02.2020

Dobra chyba dałem sobie rade, można zamykać xD
Quote

  • +
  • -
DarkGL's Photo DarkGL 16.02.2020

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked