05.06.2016, 03:19
(
Последний раз редактировалось zSuYaNw; 01.09.2016 в 14:05.
)
zSINI
Introduзгo:
Em 2012 que comecei a desenvolver essa plugin no intuito de criar funзхes extras e tambйm rapidez com eficiкncia e seguranзa, Tendo em visto que o principal mйtodo de salvamento de arquivos era o "sistema ini" e que hoje em dia estб perdendo espaзo para bancos em SQL ( MySL / SQLite ). Inicialmente eu estava desenvolvendo meu servidor e precisava de algumas funзхes para manipular diretуrio. Como eu estava tambйm iniciando na linguagem C/C++ resolvi desenvolver uma plugin para me desenvoler e apurar meu 6є sentido. Desenvolvi essa plugin livres de bugs e ainda considerando uma rapidez enorme comparada ao DOF2 e os atuais sistemas de arquivos.
Caracterнsticas:
O Algorнtimo й realmente simples! Nгo utilizei nenhuma tecnologia do C++ apenas procurei programar totalmente em cache que й um mйtodo rбpido e totalmente eficaz.
* Pensei em utilizar thread porйm pela velocidade que eu consegui com cache, nгo achei necessбrio.
- Funзхes
- IniOpen(filename[]);
- IniOpen abre um arquivo. Ela й essencial para vocк comeзar a manipular o arquivo
- Parвmetro: Filename - nome do arquivo
- Essa funзгo retorna 1 caso encontrar o arquivo. Caso nгo encontrar retorna 0.
- Exemplo:
PHP код:IniOpen("Contas/zSuYaNw.ini");
- IniClose()
- IniClose fecha o arquivo que vocк abriu. para poder salvar as alteraзхes sem arquivo essa funзгo й totalmente necessбria!
- Parвmetro: essa funзгo nгo precisa de parвmetros.
- Essa funзгo returna 1.
- Exemplo:
PHP код:IniOpen("Contas/zSuYaNw.ini");
{
printf("Senha: %s", IniGet("Senha"));
}
IniClose();
- IniSet(key[], value[])
- IniSet cria ou modifica um valor em seu arquivo.
- Parвmetros: Key - Chave do seu arquivo / value - Valor que vocк irб modificar. Se nгo existir a "key" no arquivo ela й criada.
- Essa funзгo sempre retorna 1.
- Exemplo:
PHP код:IniOpen("contas/zSuYaNw.ini");
{
IniSet("Nome", "Forum SA MP");
IniSet("Data", "01/01/2006");
}
IniClose();
- IniGet(key[])
- IniGet pega o valor de uma chave em determinado arquivo.
- Parвmetro: Key - Chave que vocк quer pegar.
- Essa funзгo retorna o valor da Key.
- Exemplo:
PHP код:IniOpen("contas/zSuYaNw.ini");
{
printf("- %s / %s", IniGet("Nome"), IniGet("Data"));
}
IniClose();
- IniUnset(key[])
- IniUnset remove uma key e seu valor de determinado arquivo.
- Parвmetro: Key - Chave que vocк deseja remover.
- Essa funзгo retorna 1 caso encontrar, se nгo encontrar ela retorna 0.
- Exemplo:
PHP код:IniOpen("contas/zSuYaNw.ini");
{
IniUnset("Data");
printf("Chave \"Data\" existe? %s", IniIsset("Data") ? ("SIM") : ("NГO"));
}
IniClose();
- IniClean(filename[])
- IniClean limpa totalmente um arquivo. Remove todas as entradas dele.
- Parвmetro: filename - Arquivo que deseja limpar.
- Essa funзгo retorna 1 caso encontrar o arquivo, se nгo encontrar retorna 0.
- Exemplo:
PHP код:IniClean("quente.txt");
- IniIsset(key[])
- IniIsset verifica se alguma key existe em determinado arquivo.
- Parвmetro: Key - Chave que й verificada.
- Retorna 1 caso ela existir, se nгo encontrar retorna 0.
- Exemplo:
PHP код:IniOpen("contas/zSuYaNw.ini");
{
if(!IniIsset("Senha")){
print ("O Usuбrio nгo tem uma senha!");
}else{
print ("O Usuario tem uma senha :)");
}
}
IniClose();
- IniCreate(filename[])
- IniCreate cria um arquivo limpo, sem nenhuma entrada.
- Parвmetros: filename - Nome do arquivo em que deseja criar.
- Se o arquivo jб existe returna 0, caso nгo existir ele cria e retorna 1.
- Exemplo:
PHP код:IniCreate("meurquivo.inc");
- IniRename(filename[], newname[i])
- IniRename renomeia o arquivo.
- Parвmetros: filename - Nome do arquivo que deseja renomear / newname - novo nome do arquivo.
- Essa funзгo retorna 1 caso o arquivo existir, se nгo existir retorna 0.
- Exemplo:
PHP код:IniRename("Garfield.ini", "zSuYaNw.ini");
- IniRemove(filename[])
- IniRemove deleta/remove seu arquivo.
- Parвmetro: filename - Nome do arquivo que desja remover.
- Essa funзгo retorna 1 caso o arquivo existir, se nгo existir retorna 0.
- Exemplo:
PHP код:IniRemove("Garfield.ini");
- IniCopy(filename[], nextname[])
- IniCopy copia um arquivo no mesmo diretуrio.
- Parвmetro: filename - Nome do arquivo que deseja copiar. / nextname - nome da cуpia do arquivo.
- Caso o arquivo existir retorna 1, se nгo existir retorna 0.
- Exemplo:
PHP код:IniCopy("suyanw.ini", "suyaaaaaaan.txt");
- IniIntGet(key[])
- IniIntGet pega o valor inteiro de determinada chave.
- Parвmetro: key - chave que desja pegar o valor.
- Retorna a chave caso ela existir, caso contrбrio retorna 0.
- Exemplo:
PHP код:IniOpen("suyanw.ini");
{
printf("Score: %d - Senha: %d", IniIntGet("Score"),IniIntGet("Senha"));
}
IniClose();
- IniFloatGet(key[])
- IniFloatGet pega um valor float de determinada chave.
- Parвmetro: key - chave que deseja pegar o float.
- Retorna o float caso ele existir, caso contrбrio retorna 0.
- Exemplo:
PHP код:IniOpen("suyanw.ini");
{
printf("Posiзгo: %f, %f, %f", IniFloatGet("Posx"), IniFloatGet("Posy"), IniFloatGet("Posz"));
}
IniClose();
- IniBoolGet(key[])
- IniBoolGet pega a bool de determinado key.
- Parвmetro: key - chave aonde deseja extrair a bool.
- Caso nгo existir a key, ela retorna 0.
- Exemplo:
PHP код:IniOpen("suyanw.ini");
{
new bool: gang;
gang = IniBoolGet("CriarGang");
printf("Valor: %d", gang);
}
IniClose();
- IniBoolSet(key[], bool: value)
- IniBoolSet modifica a bool em determinado arquivo, caso nгo existir a key ela й criada.
- Parвmetros: Key chave aonde deseja modificar a bool / bool valor da chave.
- Retorna 1.
- Exemplo:
PHP код:IniOpen("suyanw.ini");
{
new bool: gang;
gang = false;
IniBoolSet("CriarGang", gang);
}
IniClose();
- IniIntSet(key[], value[])
- IniIntSet modifica um valor inteiro em determinado arquivo, caso nгo existir a key, ela й criada.
- Parвmetros: Key chave aonde deseja modificar / value valor da chave.
- Retorna 1.
- Exemplo:
PHP код:IniOpen("suyanw.ini");
{
new mortes;
mortes = 1423;
IniIntSet("Matou", mortes);
}
IniClose();
- IniFloatSet(key[], Float: value)
- IniFloatSet modifica um valor flutuante ( float ) em determinado arquivo, caso ele nгo existir ela й criada.
- Parвmetros: Key chave aonde deseja modificar / value valor da float.
- Retorna 1.
- Exemplo:
PHP код:IniOpen("suyanw.ini");
{
new Float:Angulo;
Angulo = 45.5644;
IniFloatSet("Angulo", Angulo);
}
IniClose();
- DirCreate(dirname[])
- DirCreate cria uma pasta no scriptfiles.
- Parвmetros: dirname - nome da pasta que desja criar.
- Retorna 1 se ela nгo existir, caso contrбrio ela retorna 0.
- Exemplo:
PHP код:DirCreate("Forum");
- DirDelete(dirname[])
- DirDelete deleta uma pasta e todos os arquivos contidos nela..
- Parвmetros: dirname - nome da pasta que deseja excluir.
- Retorna 1 se ela nгo existir, caso contrбrio ela retorna 0.
- Exemplo:
PHP код:DirDelete("Forum");
- DirRename(dirname[], newname[])
- DirRename(dirname[], newname[]) renomeia uma pasta.
- Parвmetros: dirname - Nome da pasta que deseja renomear / newname - novo nome da pasta.
- Essa funзгo retorna 1 caso a pasta existir, se nгo existir retorna 0.
- Exemplo:
PHP код:DirRename("contas", "Accounts");
- OpenDir(dirname[]) - ( zSINI Versгo 1.1 )
- OpenDir(dirname[]) abre um diretуrio.
- Parвmetros: dirname - pasta que desejas abrir.
- Essa funзгo retorna 1 caso conseguir abrir, retorna 0 caso nгo conseguir.
- Exemplo:
PHP код:OpenDir("corridas/");
{
}
CloseDir();
- CloseDir() - ( zSINI Versгo 1.1 )
- CloseDir() fecha um diretуrio aberto.
- Parвmetros: essa funзгo nгo contйm parвmetros.
- Retorna 1 jб foi aberto algum diretуrio com a funзгo OpenDir, caso contrбrio retorna 0.
- Exemplo:
PHP код:OpenDir("corridas/");
{
}
CloseDir();
- ReadDir(dest[] ) - ( zSINI Versгo 1.1 )
- ReadDir(dest[] Lк um diretуrio aberto.
- Parвmetros: Dest[] - String para o nome do arquivo encontrado.
- Retorna 1 jб foi aberto algum diretуrio com a funзгo OpenDir, caso contrбrio retorna 0.
- Exemplo:
PHP код:new string[24];
new arquivos;
OpenDir("corridas/");
{
arquivos = DirSize();
printf("Essa pasta contйm %d corridas!", arquivos);
for(new i; i != arquivos; ++i){
ReadDir(string);
printf("Arquivo: %d - %s", i, string);
}
}
CloseDir();
- DirSize() - ( zSINI Versгo 1.1 )
- DirSize() informa o nъmeros de arquivos e pastas em um diretуrio.
- Parвmetros: Essa funзгo nгo contйm parвmetros.
- Retorna a quantidade de pastas ou arquivos em um diretуrio. caso nгo for aberto nenhum diretуrio, retorna 0.
- Exemplo:
PHP код:OpenDir("casas/");
{
printf("Essa pasta contйm %d arquivos!", DirSize());
}
CloseDir();
Fiz um pequeno sistema de registro para vocкs entenderem o uso dessa plugin!
PHP код:
#include <a_samp>
#include zcmd
#include zsini
public OnFilterScriptInit()
{
print("Simples sistema de registro e login carregado com sucesso!");
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
new string[128];
new Nome[24];
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.ini", Nome);
if(IniExists(string)){
SendClientMessage(playerid, -1, "[INFO]: Vocк tem uma conta! digite /logar");
}
return true;
}
CMD:logar(playerid, params[]){
if(isnull(params)){
return SendClientMessage(playerid, -1, "[INFO]: Por favor, digite uma senha!");
}
new string[128];
new Nome[24];
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.ini", Nome);
if(!IniExists(string)){
return SendClientMessage(playerid, -1, "[INFO]: Vocк nгo tem uma conta! digite /registrar");
}
new senha[10];
IniOpen(string);
{
format(senha, sizeof(senha), IniGet("Senha"));
}
IniClose();
if(strcmp(senha, params) != 0){
return SendClientMessage(playerid, -1, "[INFO]: senha errada!");
}
IniOpen(string);
{
SetPlayerScore(playerid, IniIntGet("Score"));
}
IniClose();
format(string, sizeof(string), "Nome: %s - %s", Nome, senha);
SendClientMessage(playerid, -1, string);
SendClientMessage(playerid, -1, "[INFO]: Logado!!");
return 1;
}
CMD:registrar(playerid, params[]){
if(isnull(params)){
return SendClientMessage(playerid, -1, "[INFO]: Por favor, digite uma senha!");
}
if(strlen(params) > 8 || strlen(params) < 3){
return SendClientMessage(playerid, -1, "[INFO]: Por favor, digite uma senha de no mнnimo 3 caracteres, e no mбximo 8");
}
new string[128];
new Nome[24];
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.ini", Nome);
IniCreate(string);
IniOpen(string);
{
IniSet("Senha", params);
IniIntSet("Score", GetPlayerScore(playerid));
}
IniClose();
format(string, sizeof(string), "Cadastrado %s! Senha: %s", Nome, params);
SendClientMessage(playerid, -1, string);
return true;
}
Crйditos:
Essa plugin foi desenvolvida totalmente por mim, vendo alguns tutoriais no fуrum e estudando bastante. Nгo permito a postagem da mesma em quaisquer meio de comunicaзгo sem minha concepзгo. Obra registrada.
Agradecimentos:
- Breakdrift ( Marcelo )
- ipsLeon ( Leonardo )
- Dolby ( Gustavo Araъjo )
- Multikill
Nota:
Caso falte algumas DLL's em seu computador, sugiro que atualize os seguintes aplicativos da microsoft:
Quote:
You need to install the necessary redistributable packages:
http://www.microsoft.com/en-us/downl...s.aspx?id=5555 http://www.microsoft.com/en-us/downl...s.aspx?id=8328 http://www.microsoft.com/en-us/downl....aspx?id=30679 https://www.microsoft.com/en-us/down....aspx?id=48145 |
Download:
Versгo 1.1:
#Linux ( zSINI.so )
#Windows ( zSINI.dll )
#Include
#Source