#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"); } |