#include <a_samp>
#include <Dini>
#include <sscanf2>
#include <zcmd>
new Whitelist[20] = "Whitelist.txt";
new pid;
new name2[MAX_PLAYER_NAME];
public OnFilterScriptInit()
{
print("Whitelist loaded.");
if(!dini_Exists(Whitelist))
{
dini_Create(Whitelist);
}
return 1;
}
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
if(dini_Int(Whitelist,name) != 1)
{
if(dini_Int(Whitelist,name) != 0)
{
dini_IntSet(Whitelist,name,0);
}
}
if(dini_Int(Whitelist,name) != 1)
{
SendClientMessage(playerid,-1,"You are not Whitelisted!");
Kick(playerid);
return 0;
}
return 1;
}
CMD:addtowhitelist(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
if(sscanf(params,"%u",pid)) return SendClientMessage(playerid,-1,"Usage: /addtowhitelist [playerid / name]");
GetPlayerName(pid,name2,MAX_PLAYER_NAME);
dini_IntSet(Whitelist,name2,1);
}
return 1;
}
CMD:removefromwhitelist(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
if(sscanf(params,"%u",pid)) return SendClientMessage(playerid,-1,"Usage: /removefromwhitelist [playerid / name]");
GetPlayerName(pid,name2,MAX_PLAYER_NAME);
dini_IntSet(Whitelist,name2,0);
}
return 1;
}
#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");
}
|
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");
}
|