file_read

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
lexz
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 917
Joined: 02 Nov 2020, 01:57
Detinator Steam: Da
Fond eXtream: 0
Discord: lexzor#0630
Has thanked: 71 times
Been thanked: 136 times

21 Nov 2020, 02:39

Salut baieti. caut si eu un tutorial cum sa citesc hartile dintr-un .ini si daca harta este aceeasi cu cea pe care eu am selectat-o, sa nu mearga.

momentan am facut asta:

Code: Select all

	if (file_exists("addons/amxmodx/configs/%s"), fileno ){
		file_exists()
		server_print("[STATE3] Folderul %s nu exista, contacteaza-l pe %s", fileno, lexzor );
	}
	while (fgets(fileno)){
		fgets(file, szLineData, charsmax(szLineData))
		
	}
}
stiu ca e total gresit, dar as prefera ceva cu explicatii in loc sa-mi trimiteti codul sa copiez ca boul.

mersi anticipat baietilor care ma ajuta :D
RoyalServer 2
ZackChoi
Membru, skill +1
Membru, skill +1
Posts: 162
Joined: 28 Dec 2019, 01:39
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 1 time
Been thanked: 7 times

22 Nov 2020, 19:24

Code: Select all

public plugin_cfg ( )
{
	new szDir [ 64 ], szFile [ 128 ];
	get_configsdir ( szDir, charsmax ( szDir ) );
	formatex ( szFile, charsmax ( szFile ), "%s/harti.txt", szDir );

	if ( !file_exists ( szFile ) )	set_fail_state ( "File not found." );

	new iFile = fopen ( szFile, "r" );

	if ( iFile )
	{
		new Buffer [ 256 ];
		fgets ( iFile, Buffer, charsmax ( Buffer ) );
		trim ( Buffer );;

		if ( Buffer [ 0 ] == ';' )
			continue;

		new szMap [ 32 ];
		get_mapname ( szMap, charsmax ( szMap ) );

		if ( containi ( Buffer, szMap ) != -1 )
			set_fail_state ( "Harta actuala se afla in fisierul harti.txt" );

	}

	fclose ( iFile );
}
Shadows Adi
Membru, skill +1
Membru, skill +1
Posts: 349
Joined: 26 Jan 2020, 18:52
Detinator Steam: Da
CS Status: 0x416469
SteamID: shadowsadi120
Fond eXtream: 0
Has thanked: 14 times
Been thanked: 50 times

22 Nov 2020, 23:53

Code: Select all

public plugin_cfg() // aceasta functie se executa imediat dupa plugin_init()
{
	new path[ 64 ]; // cream o variabila cu o capacitate de 64 de celule unde vom stoca locatia fisierului
	get_configsdir( path, charsmax( path ) ); // preluam locatia directorului configs
	format( path, charsmax( path ), "%s/maps/restricted_maps.ini", path);  // adaugam si locatia fisierului din configs in variabila
	
	new file = fopen( path, "rt" ); // deschidem fisierul in format 'r' - in citire; 't' - indicam ca este un fisier text
	
	new mapname[ 32 ]; // cream o variabila de 32 de celule in care stocam numele hartii
	get_mapname( mapname, charsmax( mapname ) ); // preluam numele hartii
	
	new text[ 121 ], maptext[ 32 ];
	while( !feof( file ) )  // cat timp nu s-a ajuns la sfarsitul fisierului, executam...
	{
		fgets( file, text, charsmax( text ) ); // citim o linie din fisier
		trim( text ); // eliminam spatiile 
		
		if( text[ 0 ] == ';' || !strlen( text ) )  // daca primul spatiu este ; sau nu exista un spatiu trecem mai departe la urmatoarea linie
		{
			continue; 
		}
		
		parse( text, maptext, charsmax( maptext ) ); // se analizeaza fiecare parametru din linia respectiva
		
		if( equal( maptext, mapname) ) // daca este egal parametrul analizat din fisier cu numele hartii, executam...
		{
			// orice vrei sa faci daca egalitatea este adevarata...
			break; // oprim din executie pentru a nu se crea un loop...
		}
		
	}
	fclose( file ); // inchidem handle-ul fisierului
}
Cam atat :)
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

23 Nov 2020, 01:22

Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
ZackChoi
Membru, skill +1
Membru, skill +1
Posts: 162
Joined: 28 Dec 2019, 01:39
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 1 time
Been thanked: 7 times

23 Nov 2020, 01:23

Shadows Adi wrote:
22 Nov 2020, 23:53

Code: Select all

public plugin_cfg() // aceasta functie se executa imediat dupa plugin_init()
{
	new path[ 64 ]; // cream o variabila cu o capacitate de 64 de celule unde vom stoca locatia fisierului
	get_configsdir( path, charsmax( path ) ); // preluam locatia directorului configs
	format( path, charsmax( path ), "%s/maps/restricted_maps.ini", path);  // adaugam si locatia fisierului din configs in variabila
	
	new file = fopen( path, "rt" ); // deschidem fisierul in format 'r' - in citire; 't' - indicam ca este un fisier text
	
	new mapname[ 32 ]; // cream o variabila de 32 de celule in care stocam numele hartii
	get_mapname( mapname, charsmax( mapname ) ); // preluam numele hartii
	
	new text[ 121 ], maptext[ 32 ];
	while( !feof( file ) )  // cat timp nu s-a ajuns la sfarsitul fisierului, executam...
	{
		fgets( file, text, charsmax( text ) ); // citim o linie din fisier
		trim( text ); // eliminam spatiile 
		
		if( text[ 0 ] == ';' || !strlen( text ) )  // daca primul spatiu este ; sau nu exista un spatiu trecem mai departe la urmatoarea linie
		{
			continue; 
		}
		
		parse( text, maptext, charsmax( maptext ) ); // se analizeaza fiecare parametru din linia respectiva
		
		if( equal( maptext, mapname) ) // daca este egal parametrul analizat din fisier cu numele hartii, executam...
		{
			// orice vrei sa faci daca egalitatea este adevarata...
			break; // oprim din executie pentru a nu se crea un loop...
		}
		
	}
	fclose( file ); // inchidem handle-ul fisierului
}
Cam atat :)
nu ai de ce sa folosesti parse pentru ca pe 1 singur rand nu ai "de_dust2 cuvant cuvant cuvant".

Code: Select all

break; // oprim din executie pentru a nu se crea un loop...
for -> loop -> break
if -> conditie -> return 1/2/3
Shadows Adi
Membru, skill +1
Membru, skill +1
Posts: 349
Joined: 26 Jan 2020, 18:52
Detinator Steam: Da
CS Status: 0x416469
SteamID: shadowsadi120
Fond eXtream: 0
Has thanked: 14 times
Been thanked: 50 times

23 Nov 2020, 07:56

ZackChoi wrote:
23 Nov 2020, 01:23
nu ai de ce sa folosesti parse pentru ca pe 1 singur rand nu ai "de_dust2 cuvant cuvant cuvant".

Code: Select all

break; // oprim din executie pentru a nu se crea un loop...
for -> loop -> break
if -> conditie -> return 1/2/3
Trebuie sa preiei parametrii cumva, deci parse este cea mai buna optiune.

break; opreste loop-ul while() pentru ca ai gasit deja un rezultat potrivit, deci nu mai e nevoie sa analizezi tot fisierul.
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

23 Nov 2020, 14:00

ce a dat adi e ok, parse e cel mai ok, pentru că așa se pot trece și comentarii gen "de_dust2x2" ; bla bla, pentru că degeaba se citește dacă primul caracter e ; (comment gen), fiind cam aiurea
în loc de parse se poate da cu remove_quotes + trim(care e mereu) ca să meargă și cu "" și fără, dar nu o să mai fie valabile comment urile după "

cât despre break în if, e corect pus acolo, altfel avea eroare la compilare, de ce e ok? pentru că e în while, și practic la break se oprește și while, nu numai for, pentru că și while e tot loop
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 10 guests