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

Quote:
Originally Posted by Bruno Pereira
Посмотреть сообщение
Fiz alguns testes aqui e resultaram:
(DRAKINS) Time:152
(SII) Time: 468

Nгo sei se estб correto. Olha ae o cуdigo que usei:
Olha que nem usei variбveis no SII '-'

PHP код:
#define maxtest (1000)
public OnGameModeInit()
{
    
//Drakins
    
new bTick GetTickCount();
    
varSet("Time"666999777);
    
varSet("Time2"100000);
    new 
string[32];
    
    for(new 
ii<maxtest;i++) 
    {
        new 
File:open fopen("Tiste.ini"io_write);
        
format(string11"%d\n",varGet("Time"));
        
format(string15"%d%d",stringvarGet("Time2"));
        
fwrite(openstring);
        
fclose(open);
    }
    
printf("(DRAKINS) Time: %d"GetTickCount()-bTick);
    
    
// SII
    
bTick GetTickCount();
    for(new 
i;i<maxtest;i++) {
        if(
INI_Open("Teste.ini")) {
            
INI_WriteInt("Time"666999777);
            
INI_WriteInt("Time2"100000);
            
INI_Save();
            
INI_Close();
        }
    }
    
printf("(SII) Time: %d"GetTickCount()-bTick);
    return 
true;


Seu teste estб incorreto amigo..



o SII em sн й isto:
pawn Код:
new File:open = fopen("Tiste.ini", io_write);
        format(string, 11, "%d\n",varGet("Time"));
        format(string, 15, "%d%d",string, varGet("Time2"));
        fwrite(open, string);
        fclose(open);
o cуdigo acima й uma variбvel que pode ser usada em Gamemodes e filterscript.
POR EXEMPLO:


Suponhamos que queremos colocar a data de nascimento de algum player,
mais teremos que acessa-las pelo filterscript simultaneamente, como faremos?
pawn Код:
// Colocas no gamemode:
new valor;

valor = 1996; // Garfield nasceu em 1996


varSet("Garfield", valor);
// O Valor da variбvel remota (Garfield) tem o valor de 1996.


// Para  carregar no Filterscript usamos:
printf("Garfield tem %d anos.", 2012 - varGet("Garfield"));

- "Garfield tem 16 anos".
Reply
#22

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Seu teste estб incorreto amigo..



o SII em sн й isto:
pawn Код:
new File:open = fopen("Tiste.ini", io_write);
        format(string, 11, "%d\n",varGet("Time"));
        format(string, 15, "%d%d",string, varGet("Time2"));
        fwrite(open, string);
        fclose(open);
o cуdigo acima й uma variбvel que pode ser usada em Gamemodes e filterscript.
POR EXEMPLO:


Suponhamos que queremos colocar a data de nascimento de algum player,
mais teremos que acessa-las pelo filterscript simultaneamente, como faremos?
pawn Код:
// Colocas no gamemode:
new valor;

valor = 1996; // Garfield nasceu em 1996


varSet("Garfield", valor);
// O Valor da variбvel remota (Garfield) tem o valor de 1996.


// Para  carregar no Filterscript usamos:
printf("Garfield tem %d anos.", 2012 - varGet("Garfield"));

- "Garfield tem 16 anos".
Na verdade tб certo. Ele calculo a abertura dos dois sistemas.
Reply
#23

Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Na verdade tб certo. Ele calculo a abertura dos dois sistemas.
Acho que nгo Bruno,
porque no exemplo que ele utilizou fez o Abrimento efechamento de um arquivo que continha um
valor setado pela sua funзгo "GetVar", ou seja, para ele fazer o teste ele deverб criar um exemplo
com pVars e tambйm de um Gamemode de teste e um filterscript..

Caso a include ter a intenзгo de "Compartilhar valores pelos Gamemodes e filterscript",
meu comentбrio estб corretissimo!
Reply
#24

Mas Garfield, pelo o que entendi a principal funзгo da include nгo й esta de trazer do FS pro GM e vice e versa, por isso fiz o teste assim xD


Quote:
Originally Posted by [FeK]DraKiNs
View Post
Colocar valor em variбveis usando string. Assim vocк pode digamos alterar uma variбvel atravйs de um comando. Quando usando variбveis normais vocк nгo poderia, pois teria que especificar cada uma


stringSet(cmdtext[5], "1");

Note que cmdtext serб uma variбvel, caso o usuario digite
/teste OI

Irб mudar o valor de "oi" para 1

Caso digite

/teste SAMP

Irб mudar o valor de "SAMP" para um

Sem precisar de condicionais, pois й tudo feito em string.

_

Por isto variбveis dinвmicas. Porque vocк pode definir qual usar a qualquer momento, atй mesmo dentro do jogo em um comando
Reply
#25

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Acho que nгo Bruno,
porque no exemplo que ele utilizou fez o Abrimento efechamento de um arquivo que continha um
valor setado pela sua funзгo "GetVar", ou seja, para ele fazer o teste ele deverб criar um exemplo
com pVars e tambйm de um Gamemode de teste e um filterscript..

Caso a include ter a intenзгo de "Compartilhar valores pelos Gamemodes e filterscript",
meu comentбrio estб corretissimo!
Me mostra esta parte, por favor
pawn Код:
new File:open = fopen("Tiste.ini", io_write);
        format(string, 11, "%d\n",varGet("Time"));
        format(string, 15, "%d%d",string, varGet("Time2"));
        fwrite(open, string);
        fclose(open);
Abrimento, Formataзгo, Escrita, Close

pawn Код:
if(INI_Open("Teste.ini")) {
            INI_WriteInt("Time", 666999777);
            INI_WriteInt("Time2", 100000);
            INI_Save();
            INI_Close();
Abrimento, formataзгo, escrita, close. De qualquer forma, um ele praticou a leitura e outro a escrita. Mesmo assim o sistema que fiz fica mais rбpido, motivo? Obvio ..

Mas enfim, й realmente um erro for comparar as duas, cada um tem funзхes especificas.

Em breve criarei um INI_ParseFile para demonstrar o uso da funзгo
Reply
#26

Aqui um exemplo:

pawn Code:
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, "");
}

public OnFilterScriptInit() {
    INI_ParseFile("rs.bs", "rsBs");
    return true;
}

forward rsBs();
public rsBs() {
    print(stringGet("Deaths"));
    return printf("leitura do arquivo executada com sucesso");
}
Foi atualizado a include. Vejam !!
Reply
#27

SetPVarFloat, SetPVarString, SetPVarInt e com um simples #define SetPVarBool, e seus Get's, estб й a funзгo desta include, mas sem o playerid -q
Reply
#28

Quote:
Originally Posted by CidadeNovaRP
View Post
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.

Sim, mas й verdade. Sгo PVars Globais rбpidas. "GVars"!
Reply
#29

Quote:
Originally Posted by [FeK]DraKiNs
View Post
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.

Sim, mas й verdade. Sгo PVars Globais rбpidas. "GVars"!
Quote:
Originally Posted by [FeK]DraKiNs
View Post
Sim, mas й verdade. Sгo PVars Globais rбpidas. "GVars"!
Apenas isso que eu quis dizer Para simplificar aos novatos
Reply
#30

Quote:
Originally Posted by CidadeNovaRP
View Post
Apenas isso que eu quis dizer Para simplificar aos novatos
Sim, sim. Eu entendi. Atй coloquei na parte inicial do tуpico pra deixar explicito a funзгo disto.
Reply
#31

Quote:
Originally Posted by [FeK]DraKiNs
View Post
Surgiu um pequeno erro na biblioteca de gVars. Especificadamente nas funзхes stringSet e stringGet. Atualizaзгo:

pawn Code:
#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)
Obs Este projeto nгo usa as funзхes bugadas, entгo nгo й necessбrio atualizar. Mas caso for usar a_gvars para outras coisas atualize
Passaram 24 horas do meu ъltimo post acima.

Atualizado 17 06 2012. VEJAM TУPICO
Reply
#32

Poxa DraKiNs, sempre com coisas otimas
por acaso "property", nao sei se й o nome que devo usar, й uma coisa que uso bastante, mas nunca tinha pensado em testar a velocidade, nem tao pouco em usar para este efeito. Muito bom, Parabens
Jб agora, uma coisa DraKiNs, "property" й mais seguro que "PVar" ?
lembro de uma vez que eu fiz uma coisa qualquer aqui no forum e voce disse que podia usar PVar mas eu nem sabia :/ (sou uma tristeza tbm ahahah, ou era, agora eu sei )
Reply
#33

PVars й dedicado a players. Property й para propriedades do servidor e variбveis globais afins.
Reply
#34

sim eu sei. Bem esquece, eu troquei uma coisa. A funcao й para strings globais. Ta certo. Desculpa ai
vlw, obrigado na mesma
Reply
#35

poxa queria tanto essa include sou novato por isso nгo seei fazer alguйm pode postar sу o download por favor !!
Reply
#36

Cara se tem problema fica revivendo tуpico
Antes de Postar olha a ъltima Mensagem que postaram.
Reply
#37

A include ta com problemas:

D:\Users\-----\Desktop\------\pawno\include\a_gvars.inc(5) : error 017: undefined symbol "max_lines_file"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)