[Tutorial] Scriere fisier .ini

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
munir
Membru eXtream
Membru eXtream
Posts: 3193
Joined: 30 Aug 2012, 22:16
Detinator Steam: Da
CS Status: Fost scripter
Detinator server CS: Nu
SteamID: -
Reputatie: Fost super moderator
Restrictie schimbare nume
Nume anterior: falseq, cruyff
Location: Bucuresti
Has thanked: 342 times
Been thanked: 571 times
Contact:

16 Nov 2013, 19:52

Astazi vreau sa va invat, cum sa creati un plugin, in care veti scrie un fisier .ini

Tutorial facut la cerere - http://www.extreamcs.com/forum/mesaj175 ... l#p1750711

1. Pentru inceput, vom crea o constanta in care vom declara fisierul care va fi scris (in cazul nostru, fisierul este write, cu extensia .ini care se afla in configs)

Code: Select all

new const g_File[ 64 ] = "addons/amxmodx/configs/write.ini";
2. Vom inregistra o comanda, de tip say (in plugin_init( )), cu care vom scrie un fisier, in cazul nostru /write (ales de dvs)

Code: Select all

register_clcmd( "say /write", "Func_Write" );
3. Acum vom crea publicul care este executat cand comanda este chemata, cu parametrul id/index (in cazul nostru Func_Write)

Code: Select all

public Func_Write( id )
4. Acum vom lua/afla numele playerului, care executa comanda

Code: Select all

new szName[ 32 ];
get_user_name( id, szName, sizeof( szName ) -1 );
5. Cu functia write_file, vom scrie fisierul declarat mai sus (vom folosi un format, cu care vom scrie fisierul)

Code: Select all

new szFormat[ 32 ];
formatex( szFormat, sizeof( szFormat ) -1, "%s", szName );

write_file( g_File, szFormat, -1 );
Parametrii functiei write_file:

Code: Select all

1 - file[ ]
2 - text[ ]
3 - line = -1
In final iese cam asa:
| Afiseaza codul
#include < amxmodx >

new const g_File[ 64 ] = "addons/amxmodx/configs/write.ini";

public plugin_init( )
{
	register_clcmd( "say /write", "Func_Write" );
}

public Func_Write( id )
{
	new szName[ 32 ];
	get_user_name( id, szName, sizeof( szName ) -1 );
	
	new szFormat[ 32 ];
	formatex( szFormat, sizeof( szFormat ) -1, "%s", szName );
	
	write_file( g_File, szFormat, -1 );
}
Retras
RoyalServer 2
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

16 Nov 2013, 19:55

Mersi boss :)
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

16 Nov 2013, 22:13

Bravo, bun tutorialul! :D
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

28 Nov 2013, 18:23

deci toata smekeria e write_file()
User avatar
DaNNe.
Fost moderator
Fost moderator
Posts: 2811
Joined: 08 Nov 2013, 20:43
Detinator Steam: Da
CS Status: Activitate scăzută
SteamID: /id/FurienMaster
Reputatie: Nick anterior: DnD. Gold, Emrys
0.5/3
Fost moderator ajutator
Fost Membru Club eXtreamCS (doua luni)
Has thanked: 244 times
Been thanked: 129 times
Contact:

29 Nov 2013, 18:15

EDITAT: Gresisem subiectul
Last edited by DaNNe. on 29 Nov 2013, 18:17, edited 1 time in total.
User avatar
DaNNe.
Fost moderator
Fost moderator
Posts: 2811
Joined: 08 Nov 2013, 20:43
Detinator Steam: Da
CS Status: Activitate scăzută
SteamID: /id/FurienMaster
Reputatie: Nick anterior: DnD. Gold, Emrys
0.5/3
Fost moderator ajutator
Fost Membru Club eXtreamCS (doua luni)
Has thanked: 244 times
Been thanked: 129 times
Contact:

29 Nov 2013, 18:15

Multumim :D
Off: Mai ai idei de alte nume?... :))) ca sa le mai schimbi :))
User avatar
satasa
Membru, skill +1
Membru, skill +1
Posts: 371
Joined: 12 Nov 2012, 10:43
Detinator Steam: Nu
CS Status: Ocupat
Reputatie: Membru Club eXtreamCS (2 iun - 2 iul, Acces in Club)
Has thanked: 55 times
Been thanked: 10 times
Contact:

01 Dec 2013, 22:05

cum as putea face sa citeasca acesele dintr-un fisier .ini?(pentru vip)
User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

01 Dec 2013, 22:08

satasa wrote:cum as putea face sa citeasca acesele dintr-un fisier .ini?(pentru vip)
Astazi vreau sa va invat, cum sa creati un plugin, in care veti scrie un fisier .ini
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
munir
Membru eXtream
Membru eXtream
Posts: 3193
Joined: 30 Aug 2012, 22:16
Detinator Steam: Da
CS Status: Fost scripter
Detinator server CS: Nu
SteamID: -
Reputatie: Fost super moderator
Restrictie schimbare nume
Nume anterior: falseq, cruyff
Location: Bucuresti
Has thanked: 342 times
Been thanked: 571 times
Contact:

01 Dec 2013, 22:15

YONTU wrote:
satasa wrote:cum as putea face sa citeasca acesele dintr-un fisier .ini?(pentru vip)
Astazi vreau sa va invat, cum sa creati un plugin, in care veti scrie un fisier .ini
cum as putea face sa citeasca acesele dintr-un fisier .ini?(pentru vip)
Retras
User avatar
satasa
Membru, skill +1
Membru, skill +1
Posts: 371
Joined: 12 Nov 2012, 10:43
Detinator Steam: Nu
CS Status: Ocupat
Reputatie: Membru Club eXtreamCS (2 iun - 2 iul, Acces in Club)
Has thanked: 55 times
Been thanked: 10 times
Contact:

01 Dec 2013, 22:34

imi raspunde cineva la intrebare?
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

18 Dec 2013, 09:31

satasa wrote:imi raspunde cineva la intrebare?
scrie pe google

"amxx read_file()"
Last edited by munir on 18 Dec 2013, 11:11, edited 1 time in total.
Reason: fopen, feof, fgets, fclose sunt mult mai optimizate decat read_file.
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

27 Feb 2014, 21:02

Bunaaaaa lumeaaaaaa si am decis sa scriu aici cum sa citim dintrun fisier , sau mai clar cum sa dam vIP dintrun fisier :

1. Include librariile :

Code: Select all

#include <amxmodx>
#include <amxmisc>
2. Facem variabile globale:

Code: Select all

new Array:g_Stroke = Invalid_Array;
new bool:is_user_vip[33];
3. Facem plugin_cfg() :

Code: Select all

public plugin_cfg()
{
	static File = 0, Buffer[64], Location[256];
	
	g_Stroke = ArrayCreate(64 /* maximum length */);
	
	get_localinfo("amxx_configsdir", Location, charsmax(Location));
	
	add(Location, charsmax(Location), "/vips.ini ");
	
	if (!file_exists(Location))
	{
		File = fopen(Location, "w+" /* write file */);
		
		if (File)
		{
			fclose(File);
                }
	 }
	
	File = fopen(Location, "rt" /* read file as text */);
	
	if (File)
	{
		while (!feof(File))
		 {
			fgets(File, Buffer, charsmax(Buffer));
			
			trim(Buffer);
			
			if (!strlen(Buffer) || Buffer[0] == ';')
			  {
				  continue;
			  }
			
 			ArrayPushString(g_Stroke, Buffer);
 		 }
		
		fclose(File);
	}
}
4. inauntru la client_authorized punem asa :

Code: Select all

public client_authorized(id)
{
	if (!ArraySize(g_Stroke))
	{
		return PLUGIN_CONTINUE;
	}
	
	static Stroke[64], Size = 0;
	
	new name[35]
	get_user_authid(id, name, charsmax(name) - 1)
	
	
	for (Size = 0; Size < ArraySize(g_Stroke); Size++)
	{
		ArrayGetString(g_Stroke, Size, Stroke, charsmax(Stroke));
		
		if (equal(name, Stroke))
		{
			is_user_vip[id] = true
			
			return PLUGIN_HANDLED;
 		 }
	}
	
	return PLUGIN_CONTINUE;
}
Ps :[/b]
Daca vedeti in client_authorzied acest cod :

Code: Select all

		if (equal(name, Stroke))
		{
			is_user_vip[id] = true
			
			return PLUGIN_HANDLED;
		}
Se refera ca "name" e variabila in care am pus STEAM ID jucatorului, si "Stroke" e tot ce contine fisierul vips.ini
is_user_vip e boolean-ul pe care il steam pe true daca e adevarat. si il vom folosi sai dam iteme ..

5. Tot pluginul :

Code: Select all

#include <amxmodx>
#include <amxmisc>

new Array:g_Stroke = Invalid_Array;
new bool:is_user_vip[33];

public plugin_cfg()
{
	static File = 0, Buffer[64], Location[256];
	
	g_Stroke = ArrayCreate(64 /* maximum length */);
	
	get_localinfo("amxx_configsdir", Location, charsmax(Location));
	
	add(Location, charsmax(Location), "/vips.ini ");
	
	if (!file_exists(Location))
	{
		File = fopen(Location, "w+" /* write file */);
		
		if (File)
		{
			fclose(File);
		}
	}
	
	File = fopen(Location, "rt" /* read file as text */);
	
	if (File)
	{
		while (!feof(File))
		{
			fgets(File, Buffer, charsmax(Buffer));
			
			trim(Buffer);
			
			if (!strlen(Buffer) || Buffer[0] == ';')
			{
				continue;
			}
			
			ArrayPushString(g_Stroke, Buffer);
		}
		
		fclose(File);
	}
}

public client_authorized(id)
{
	if (!ArraySize(g_Stroke))
	{
		return PLUGIN_CONTINUE;
	}
	
	static Stroke[64], Size = 0;
	
	new name[35]
	get_user_authid(id, name, charsmax(name) - 1)
	
	
	for (Size = 0; Size < ArraySize(g_Stroke); Size++)
	{
		ArrayGetString(g_Stroke, Size, Stroke, charsmax(Stroke));
		
		if (equal(name, Stroke))
		{
			is_user_vip[id] = true
			
			return PLUGIN_HANDLED;
 		}
	}
	
	return PLUGIN_CONTINUE;
}
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 18 guests