[Include] (Dica) (Funзхes) Chamar variбvel por strings
#1

Isto sгo como PVars. Sу que direcionado para variбveis qualquer nгo exclusiva ou dedicada para jogadores. Suporta o uso de strings. Nгo usa loops e coisas do tipo, й bastante rбpido

Variбveis:
- Dinвmicas
- Fбceis
- Rбpidas
- Eficientes

Salve como include:
pawn Код:
#define max_lines_cache         (999) // maximo de variaveis str
#define max_dep_memory          (256) // maximo de caracteres em cada var


stock bufferStrings[max_lines_file][max_dep_memory];
stock sizeMemory   = 0;

#define stringSet(%0,%1)        format(bufferStrings[(setproperty(0, .name=%0, .value=( existproperty(0, %0) ) ? getproperty(0,%0) : ++sizeMemory),sizeMemory)], max_dep_memory, %1)
#define stringGet(%0)           bufferStrings[getproperty(0,%0)]

#define varGet(%0)              getproperty(0,%0)
#define varSet(%0,%1)           setproperty(0, %0, %1)

// Alocar na memуria floats. Armazenamento simples. c/ parse
#define floatSet(%0,%1)         varSet(%0,_:%1)
#define floatGet(%0)            float:varGet(%0)

// Alocar na memуria bools. Armazenamento simples. c/ parse
#define boolSet(%0,%1)          varSet(%0,_:%1)
#define boolGet(%0)             bool:varGet(%0)

Exemplos
pawn Код:
public OnFilterScriptInit() {
    // acessar string por string. Exemplo:
    stringSet("bruno1", "bruno");
    stringSet("bruno1", "dai galero");

    stringSet("samp", "pawn");
    stringSet("memoria", "salvando na memoria");

    print("Strings:");
    print(stringGet("bruno1"));
    print(stringGet("samp"));
    print(stringGet("memoria"));

    // acessar variбveis com string. Exemplo:
    varSet("pawn1",10);
    varSet("pawn1",20);

    varSet("gta",30);
    varSet("variavel",40);

    print("Inteiros:");
    printf("%d", varGet("pawn1"));
    printf("%d", varGet("gta"));
    printf("%d", varGet("variavel"));
   
    // acessar floats por string. Exemplo:
    boolSet("vida", true);
    boolSet("vida", false);
   
    boolSet("grana", true);
    boolSet("colete", true);
   
    print("Boolean:");
    printf("%d", boolGet("vida"));
    printf("%d", boolGet("grana"));
    printf("%d", boolGet("colete"));

    // acessar boolean por string. Exemplo:

    floatSet("vida", 3.23);
    floatSet("vida", 3.24);

    floatSet("grana", 4.40);
    floatSet("colete", 8.39);

    print("Floats:");
    printf("%f", floatGet("vida"));
    printf("%f", floatGet("grana"));
    printf("%f", floatGet("colete"));
    return true;
}


Para que serviria isto?
Simples, podemos usar isto para manipular desde pequenos fragmentos de cуdigos usando variбveis alternativas e de fбcil reconhecimento, como tambйm fazer variбveis e tempo real!

Variбveis dinвmicas
Exemplo de uma array para um nickname com dados boleanos na string

pawn Код:
//Colocando o valor
stringSet("[iPs]Bruno", "101"); // xxx = vida colete dinheiro
   
// Pegando o valor.
new arrayPlayer[32];
arrayPlayer = stringGet("[iPs]Bruno");
   
// 101
if(arrayPlayer{0} == 1) {
    print("o usuario [iPs]Bruno tem o primeiro parametro de vida ATIVADO"); // observe "1"01
}
// 101
if(arrayPlayer{1} == 1) {
    print("o usuario [iPs]Bruno tem o primeiro parametro de colete DESATIVADO"); // observer 1"0"1
}
// 101
if(arrayPlayer{1} == 1) {
    print("o usuario [iPs]Bruno tem o primeiro parametro de colete ATIVO"); // observer 10"1"
}

Nгo apenas para este uso, tambйm podemos usar isto para outros dados do servidor
pawn Код:
stringSet("websitedoserver", "www.brunodasilva.com.br");
    stringSet("dinheiroativado?", "ativado");
Outra coisa interessante. Este sistema serve como um avanзado e monstruoso sistema de salvamento de arquivos
Adicionando isto a um sistema ini qualquer pode-se aumentar DRБSTICAMENTE A VELOCIDADE de salvamento e arquivos, superando qualquer sistema atual pois funciona como um bom sistema de cache, sem o uso de strcmp para checar as strings na array ou atй mesmo loops.


Exemplo
pawn Код:
stock INI_ParseFile(file[], callback[] = "") {

    static
        File:open,
        stringValue[128],
        stringBuffer[128], i;
   
    open = fopen(file, io_read);
   
    while(fread(open, stringBuffer)) {
   
        stringBuffer[strlen(stringBuffer) - 2] = EOS;
       
        if((i = strfind(stringBuffer, "=", false)) != -1) {
            strmid(stringValue, stringBuffer, 0, i);
            format(stringBuffer, 128, stringBuffer[i +1]);
           
            stringSet(stringValue, stringBuffer);
        }
    }
    return CallLocalFunction(callback, "");
}
Tem a mesma funзгo desta include:
-> https://sampforum.blast.hk/showthread.php?tid=162890

Porйm o algorнtimo/lуgica que eu usei usa um sisteminha de setproperty .. Sendo mais otimizado (bastante mais rбpido)


** Atualizado 17/06/2012 as 11:44 - Informaзгo importante.
Como surgiu um problema ao atualizar as variбveis e eu nгo soube como resolver. Resolvi passar o sistema de variбveis strings para variбveis ESTБTICAS .. Permanece tudo igual, sу mudou a forma interna de como a include aloca os dados na memуria. Alocando em arrays padrхes, mas usando uma gambiarra para gravar o caminho onde foi gravada a string. Alteraзгo sу pra strng

** PVars - Informaзгo importante.
Quote:
Originally Posted by CidadeNovaRP
Посмотреть сообщение
SetPVarFloat, SetPVarString, SetPVarInt e com um simples #define SetPVarBool, e seus Get's, estб й a funзгo desta include, mas sem o playerid -q
Usar variбveis globais em PVars farб vocк literalmente se ferrar. Primeiro que caso o jogador desconecte a variбvel serб resetada. Segundo que caso o jogador esteja offline o valor da variбvel nem serб colocado. E terceiro, que PVars sгo muitas vezes lentas, apesar de dinвmicas. Neste caso, aconselho minha include.

Crйditos
-> https://sampwiki.blast.hk/wiki/Functionetproperty
-> Bruno da Silva (eu)

Se tiver bugs avisem. Nгo testei bem.
Reply


Messages In This Thread
(Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 15.06.2012, 21:30
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 15.06.2012, 21:33
Re: (Dica) (Funзхes) Chamar variбvel por strings - by DrTHE - 15.06.2012, 21:33
Re: (Dica) (Funзхes) Chamar variбvel por strings - by leonardo1434 - 15.06.2012, 21:34
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 15.06.2012, 21:35
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 15.06.2012, 22:22
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Edu33 - 15.06.2012, 22:24
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 15.06.2012, 22:26
Re: (Dica) (Funзхes) Chamar variбvel por strings - by paulor - 15.06.2012, 22:57
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 15.06.2012, 23:53
Re: (Dica) (Funзхes) Chamar variбvel por strings - by leonardo1434 - 16.06.2012, 00:06
Re: (Dica) (Funзхes) Chamar variбvel por strings - by paulor - 16.06.2012, 00:14
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Lucas_Alemao - 16.06.2012, 00:42
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 00:48
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 16.06.2012, 01:07
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 01:09
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Kuddy - 16.06.2012, 01:10
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 01:12
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 16.06.2012, 01:23
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Kuddy - 16.06.2012, 01:24
Re: (Dica) (Funзхes) Chamar variбvel por strings - by zSuYaNw - 16.06.2012, 03:21
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 03:58
Re: (Dica) (Funзхes) Chamar variбvel por strings - by zSuYaNw - 16.06.2012, 04:12
Re: (Dica) (Funзхes) Chamar variбvel por strings - by Bruno Pereira - 16.06.2012, 04:19
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 04:23
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 04:44
Respuesta: (Dica) (Funзхes) Chamar variбvel por strings - by CidadeNovaRP - 16.06.2012, 12:58
Re: Respuesta: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 18:47
Respuesta: Re: Respuesta: (Dica) (Funзхes) Chamar variбvel por strings - by CidadeNovaRP - 16.06.2012, 21:08
Re: Respuesta: Re: Respuesta: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 16.06.2012, 23:47
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 17.06.2012, 14:37
Re: (Dica) (Funзхes) Chamar variбvel por strings - by DartakousLien - 18.06.2012, 22:50
Re: (Dica) (Funзхes) Chamar variбvel por strings - by ipsBruno - 19.06.2012, 04:02
Re: (Dica) (Funзхes) Chamar variбvel por strings - by DartakousLien - 19.06.2012, 17:46
Re: (Dica) (Funзхes) Chamar variбvel por strings - by BRUNO2BTL - 19.11.2012, 13:54
Re: (Dica) (Funзхes) Chamar variбvel por strings - by smiiir - 19.11.2012, 14:16
Re: (Dica) (Funзхes) Chamar variбvel por strings - by HumildadeForevis - 27.06.2013, 17:16

Forum Jump:


Users browsing this thread: 1 Guest(s)