15.06.2012, 21:30
(
Последний раз редактировалось ipsBruno; 17.06.2012 в 14:40.
)
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:
Exemplos
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
Nгo apenas para este uso, tambйm podemos usar isto para outros dados do servidor
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
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.
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.
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");
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, "");
}
-> 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:
SetPVarFloat, SetPVarString, SetPVarInt e com um simples #define SetPVarBool, e seus Get's, estб й a funзгo desta include, mas sem o playerid -q
|
Crйditos
-> https://sampwiki.blast.hk/wiki/Functionetproperty
-> Bruno da Silva (eu)
Se tiver bugs avisem. Nгo testei bem.