help with whitelist
#8

Instead of dini or any other system, use it's own file read/write system which is way more fast, I've made this one for you real quick, hopefully will work but didn't get time to test it, post errors if any.

Код:
#include <a_samp>
#include <sscanf2>
#include <zcmd>

new Whitelist[20] = "Whitelist.txt";

public OnFilterScriptInit()
{
	print("Whitelist loaded.");
	return 1;
}

public OnPlayerConnect(playerid)
{
	if(!IsWhitelisted(playerid))
	{
        SendClientMessage(playerid,-1,"You are not Whitelisted!");
		Kick(playerid);
	}
	return 1;
}

CMD:addtowhitelist(playerid,params[])
{
	new pid;
	if(IsPlayerAdmin(playerid))
	{
	    if(sscanf(params,"u",pid)) return SendClientMessage(playerid,-1,"Usage: /addtowhitelist [playerid / name]");
        AddPlayerToWhitelist(pid);
	}
	return 1;
}
CMD:removefromwhitelist(playerid,params[])
{
	new pid;
	if(IsPlayerAdmin(playerid))
	{
	    if(sscanf(params,"u",pid)) return SendClientMessage(playerid,-1,"Usage: /removefromwhitelist [playerid / name]");
	    RemovePlayerFromWhitelist(pid);
	}
	return 1;
}

stock IsWhitelisted(playerid)
{
    new string[128], name[32];
    GetPlayerName(playerid, name, 32);
    if(!fexist(Whitelist)) {new File:fhandle = fopen(Whitelist,io_write); fclose(fhandle);}
    new File:hfile = fopen("Whitelist.txt", io_read);
    while(fread(hfile, string))
    {
        if(!strcmp(string, name, false, strlen(name)) && strlen(string))
        {
            return true;
         }
    }
    fclose(hfile);
    return false;
}

stock AddPlayerToWhitelist(playerid)
{
	new name[32];
	if(!fexist(Whitelist)) {new File:fhandle = fopen(Whitelist,io_write); fclose(fhandle);}
	GetPlayerName(playerid, name, 32);
	new File:hfile = fopen(Whitelist, io_append);
	new str[128];
	format(str, 128, "%s\r\n", name);
	fwrite(hfile, str);
        fclose(hfile);
}

stock RemovePlayerFromWhitelist(playerid)
{
	new name[32], string[256], line=0;
	GetPlayerName(playerid, name, 32);
	if(!fexist(Whitelist)) {new File:fhandle = fopen(Whitelist,io_write); fclose(fhandle);}
	new File:hfile = fopen(Whitelist, io_read);
	while(fread(hfile, string))
	{
		if(!strcmp(string, name, false, strlen(name)) && strlen(string))
		{
			fdeleteline(Whitelist, line);
		}
		line++;
	}
        fclose(hfile);
}

stock fdeleteline(filename[], line)
{
  new count, string[256], File:file, File:temp;

  file= fopen(filename, io_read);
  temp = fopen("tmpfile.tmp", io_write);

  while (fread(file, string))
    if (++count != line)
      fwrite(temp, string);

  fclose(file);
  fclose(temp);

  file= fopen(filename, io_write);
  temp = fopen("tmpfile.tmp", io_read);

  while (fread(temp, string))
    fwrite(file, string);

  fclose(file);
  fclose(temp);
  fremove("tmpfile.tmp");
}
Reply


Messages In This Thread
help with whitelist - by Infinity001 - 25.12.2015, 10:59
Re: help with whitelist - by vassilis - 25.12.2015, 11:06
Re: help with whitelist - by Infinity001 - 25.12.2015, 11:10
Re: help with whitelist - by vassilis - 25.12.2015, 11:15
Re: help with whitelist - by Infinity001 - 25.12.2015, 11:15
Re: help with whitelist - by vassilis - 25.12.2015, 11:17
Re: help with whitelist - by Infinity001 - 25.12.2015, 12:02
Re: help with whitelist - by Tamy - 25.12.2015, 13:34
Re: help with whitelist - by Infinity001 - 25.12.2015, 13:40
Re: help with whitelist - by BiosMarcel - 25.12.2015, 13:55

Forum Jump:


Users browsing this thread: 1 Guest(s)