rendered paste body/*################################## K's Technology - File ## Ver. 0.1b ## Created by K_POLAND ## ## Copyright © K_POLAND ##################################*/#include a_samp#define SYMBOL '='#define K'sEXTENSION ".KTech"stock GetStrFromFile(fname[], str[]){ new File:f = fopen(fname, io_read), result[128]; if(!fexist(fname)) return result; while(fread(f, result, sizeof(result))) { if(!strcmp(str, result, true, strlen(str))) { if(result[strlen(str)] == SYMBOL) { if(result[strlen(result)-1] == '\n' || result[strlen(result)-1] == '\r') { result[strlen(result)-1] = EOS; if(result[strlen(result)-1] == '\n' || result[strlen(result)-1] == '\n') { result[strlen(result)-1] = EOS; } } strdel(result, 0, strlen(str)+1); fclose(f); return result; } } result[0] = EOS; } fclose(f); return result;}stock GetIntFromFile(fname[], str[]) return strval(GetStrFromFile(fname, str));stock Float:GetFloatFromFile(fname[], str[]) return floatstr(GetStrFromFile(fname, str));stock GetBoolFromFile(fname[], str[]){ if(!strval(GetStrFromFile(fname, str))) return false; return true;}stock CreateFile(fname[]){ if(fexist(fname)) return 0; new File:f = fopen(fname); fclose(f); return 1;}stock RemoveFile(fname[]){ if(!fexist(fname)) return 0; fremove(fname); return 1;}stock RenameFile(fname[], newname[]){ if(!fexist(fname) || fexist(newname)) return 0; if(!strcmp(fname, newname, false)) return 0; new File:f = fopen(fname, io_read), File:nf = fopen(newname, io_append), buffer, flen = flength(f); while(flen != 0) { fputchar(nf, fgetchar(f, buffer,false), false); flen--; } fclose(nf); fclose(f); fremove(fname); return 1;}stock CopyFile(fname[], newname[]){ if(!fexist(fname) || fexist(newname)) return 0; if(!strcmp(fname, newname, false)) return 0; new File:f = fopen(fname, io_read), File:nf = fopen(newname, io_append), buffer, flen = flength(f); while(flen != 0) { fputchar(nf, fgetchar(f, buffer,false), false); flen--; } fclose(nf); fclose(f); return 1;}stock FileExists(fname[]){ if(!fexist(fname)) return 0; return 1;}stock SetStrOption(fname[], opt[], str[]){ if(!fexist(fname)) return 0; new File:f, File:Kf, buffer[256], KfName[128], option[128], bool:x = false; format(option, sizeof(option), "%s%c", opt, SYMBOL); strcat(KfName, fname, sizeof(KfName)); strcat(KfName, K'sEXTENSION, sizeof(KfName)); if(fexist(KfName)) return 0; f = fopen(fname, io_readwrite); Kf = fopen(KfName, io_readwrite); while(fread(f, buffer, sizeof(buffer))) { if(!strcmp(option, buffer, true, strlen(option))) { format(buffer, sizeof(buffer), "%s%s\r\n", option, str); x = true; } fwrite(Kf, buffer); } fclose(f); fclose(Kf); fremove(fname); RenameFile(KfName, fname); if(x == false) { f = fopen(fname, io_append); format(buffer, sizeof(buffer), "%s%s\r\n", option, str); fwrite(f, buffer); fclose(f); } return 0;}stock SetIntOption(fname[], opt[], integer){ new s[128]; format(s, sizeof(s), "%d", integer); return SetStrOption(fname, opt, s);}stock SetFloatOption(fname[], opt[], Float:fl){ new s[128]; format(s, sizeof(s), "%f", fl); return SetStrOption(fname, opt, s);}stock SetBoolOption(fname[], opt[], bool:b){ new s[128]; format(s, sizeof(s), "%d", b); return SetStrOption(fname, opt, s);}stock UnsetOption(fname[], opt[]){ if(!fexist(fname)) return 0; new File:f, File:Kf, buffer[256], KfName[128]; strcat(KfName, fname, sizeof(KfName)); strcat(KfName, K'sEXTENSION, sizeof(KfName)); if(fexist(KfName)) return 0; f = fopen(fname, io_readwrite); Kf = fopen(KfName, io_readwrite); while(fread(f, buffer, sizeof(buffer))) { if(!strcmp(opt, buffer, true, strlen(opt))) { buffer[0] = EOS; } fwrite(Kf, buffer); } fclose(f); fclose(Kf); fremove(fname); RenameFile(KfName, fname); return 0;}stock Write(fname[], const str[]){ if(!fexist(fname)) return 0; new File:f = fopen(fname, io_append); fwrite(f, str); fclose(f); return 0;}stock Read(fname[], line){ new File:f = fopen(fname, io_read), buffer[256]; if(!fexist(fname)) return buffer; for(new a = 0; a < line; a++) { fread(f, buffer, sizeof(buffer)); if(buffer[strlen(buffer)-1] == '\n' || buffer[strlen(buffer)-1] == '\r') { buffer[strlen(buffer)-1] = EOS; if(buffer[strlen(buffer)-1] == '\n' || buffer[strlen(buffer)-1] == '\n') { buffer[strlen(buffer)-1] = EOS; } } } fclose(f); return buffer;}stock SaveToArray(fname[], line, array[], maxlength) return strcat(array, Read(fname, line), maxlength);stock ROT13(text[]){ new a, r[256]; while(text[a] != 0) { switch(text[a]) { case 65..77: r[a]=text[a]+13; case 97..109: r[a]=text[a]+13; case 78..90: r[a]=text[a]-13; case 110..122: r[a]=text[a]-13; default: r[a] = text[a]; } a++; } return r;}stock KEncrypt(text[]){ new a, r[2][256]; while(text[a] != 0) { format(r[0], 256, "%dK", text[a]*3); strcat(r[1], r[0], 256); a++; } return r[1];}stock KDecrypt(text[]){ new r[256], o, a, k; while(text[a] != 0) { if(text[a] == 'K') { r[o] = k/3; o++; k = 0; strdel(text, 0, a); a = 0; } else { k = k * 10 + text[a] - 48; } a++; } return r;}stock KSEM(text[]) // K's Super Encrypt Method{ new a, r[512], omfg[512]; while(text[a] != 0) { format(omfg, 512, "%d", text[a]*13); strcat(r, omfg, 512); a++; } return r;}stock SetPassword(fname[], opt[], pass[], method[]){ if(!strcmp(method, "ROT13", true)) return SetStrOption(fname, opt, ROT13(pass)); else if(!strcmp(method, "K", true)) return SetStrOption(fname, opt, KEncrypt(pass)); else if(!strcmp(method, "KSEM", true)) return SetStrOption(fname, opt, KSEM(pass)); return 0;}stock GetPassword(fname[], opt[], method[], array[], maxlength){ array[0] = EOS; // I'm sorry :P if(!strcmp(method, "ROT13", true)) return strcat(array, ROT13(GetStrFromFile(fname, opt)), maxlength); else if(!strcmp(method, "K", true)) return strcat(array, KDecrypt(GetStrFromFile(fname, opt)), maxlength); return 0;}stock CompareKSEMPasswords(fname[], opt[], password[]){ if(strcmp_ex(GetStrFromFile(fname, opt), KSEM(password))==0) return 0; return 1;}stock strcmp_ex(const f[], const pass[]){ new strlenf = strlen(f)-1; if(strlenf != strlen(pass)) return 0; for(new a = 0; a < strlenf; a++) { if(f[a] != pass[a]) return 0; } return 1;}/*native FileExists(fname[]);native CreateFile(fname[]);native RemoveFile(fname[]);native CopyFile(fname[], newname[]);native RenameFile(fname[], newname[]);native native GetStrFromFile(fname[], option[]);native GetIntFromFile(fname[], option[]);native GetFloatFromFile(fname[], option[]);native GetBoolFromFile(fname[], option[]);native GetPassword(fname[], option[], method[], array[], maxlength);native CompareKSEMPasswords(fname[], option[], password[]);native native SetStrOption(fname[], option[], str[]);native SetIntOption(fname[], option[], integer);native SetFloatOption(fname[], option[], Float);native SetBoolOption(fname[], option[], bool);native SetPassword(fname[], option[], password[], method[]);native UnsetOption(fname[], option[]);native native Write(fname[], str[]);native Read(fname[], line);native SaveToArray(fname[], line, array[], maxlength);native native ROT13(text[]);native KEncrypt(text[]);native KDecrypt(text[]);native KSEM(text[]);*/