30.08.2012, 03:02
(
Последний раз редактировалось Diogo123; 30.08.2012 в 16:02.
)
Boa Noite Galera *---*
Bem eu estava em umas dъvidas sobre PVars , entгo eu vi o tуpico do ****** , bem estб muito bem explicado

Entгo eu pedi para ele se eu poderia traduzir o tutorial para portuguкs ... ele deixou mas com a condiзгo de manter o link do tуpico original e tambйm os devidos crйditos.

Tutorial :
OK , isso й algo que muitas pessoas erram o tempo todo.
Eu vou explicar isso em uma linha:
99% do tempo que vocк nгo precisa e nгo deve usar, PVARS.
Para explicar isso , eu vou ter de explicar um pouco sobre variбveis regulares e um pouco sobre PVARS :
Variбveis Regulares
Variбveis regulares sгo armazenados no espaзo de memуria do seu script PAWN.
Quando vocк usa um variбvel do script PAWN vк um endereзo - й onde os dados, ele carrega os dados neste endereзo e que usa para o que vocк estava usando o variбvel para :
Se vocк escrever um script para a variбvel de novo , no ponto onde vocк colocou o variбvel , tem o endereзo de memуria para colocar os dados dentro.
Й isso й muito rбpido , porque o script vк um endereзo de carregar / armazenar os dados nesse ponto.
PVars
Aqui й o que acontece quando vocк carrega um pVar :
O script carrega a variбvel de jogador , para ver qual jogador para carregar os dados para.
O script carrega outra variбvel que na verdade й o nome de string do pVar. Note-se que esta й a forma como as cordas de compilador armazena - eles sгo todos colocados na mesma бrea de memуria principal e o cуdigo simplesmente contйm um ponteiro para o endereзo correcto ( tornando o cуdigo basicamente idкntica а do carregamento de variбveis ).
Estes valores sгo empurrados para a pilha e a funзгo de carga relvante pVar й chamada.
Dentro dessa funзгo , a carga nome й olhou para cima de uma mesa ( nгo tenho certeza o que o sistema de pesquisa й usado, mas para a velocidade eu espero mapas hash ).
Quando o nome passado й encontrado em este mapa (como a chave) o valor armazenado lб ( mapas referem "chaves" para "valores" , assim vocк pode essencialmente nada de нndice com qualquer outra coisa ) й carregado.
Este valor й retornado como o valor pVar para o jogador ( nota que as cordas sгo ainda mais difнceis ).
A escrita й essencialmente o mesmo , mas a escrita para o valor , em vez de o colocar.
Arrays
O principal item do cуdigo contra o qual PVARS competir й matrizes.
As matrizes sгo feitas de uma maneira muito semelhante аs variбveis , mas com um passo adicional.
Primeiro , o нndice й carregado ( pode ser outra variбvel, um cбlculo , ou mesmo outro elemento matriz ).
Este нndice й adicionado ao endereзo base da matriz e que o endereзo й carregado como uma variбvel normal.
Uso
Espero que desta explicaзгo sу й уbvio que й o mйtodo mais lento para armazenar e carregar dados ( eu vou te dar uma dica - nгo й variбveis ou matrizes ).
Eu nгo tenho quaisquer horбrios , mas nenhum sгo necessбrios para provar que , dado que a maioria pVar chama realmente conter uma carga varaible dentro deles , o que significa que eles nгo podem ser mais rбpido.
Entгo, quando vocк deve usб-los?
♣ Sharing data ( Partilha de dados ) - Como eu tenho certeza de que a maioria sabe, PVARS sгo compartilhados entre gamemodes e filterscripts assim pode ser usado para transmitir dados entre eles. No entanto, propriedades e "CallRemoteFunction" tambйm pode ser usado para compartilhar dados, de modo que nгo pode mesmo ser a melhor forma de partilha de dados.♣ Sparse arrays ( Matrizes esparsas ) - A "sparse array" й uma matriz que pode muito bem, muitas vezes tкm mais de seus valores vazio.
Esta й a ъnica vez que eu usei PVARS. Na biblioteca empate texto YSI vocк pode mostrar um TD a um jogador por um determinado tempo ( como a vez em Textos do jogo ) - isso significa que cada jogador precisa ter um temporizador para cada texto desenhar para saber quando escondк-lo.
No entanto, dado que hб uma grande chance de que nгo serб TDs em temporizadores e dado o fato de que isso exigiria uma matriz de vбrios milhхes de cйlulas apenas para armazenar alзas para um temporizadores poucos ( mesmo se todos sгo TDs em temporizadores , nenhum jogador terб todos os TDs mostrado de uma vez e alguns podem ter nenhum em exibiзгo ).
Neste caso eu usei PVARS para armazenar o timer lida como a memуria й alocada dinamicamente.
♣ Dynamic Memory ( Memуria Dinвmica )Pode ser o caso de que vocк precisa para armazenar dados em um nъmero desconhecido de itens.
Um exemplo disso pode ser um comando de "Spawn", que leva dois parвmetros - uma identificaзгo de um modelo e uma uma contagem.
Quando um jogador executa este comando o objeto dado й gerado o nъmero determinado de vezes.
Nгo
O ommision mais gritante da lista acima й os dados do usuбrio.
Se um jogador faz login no seu servidor e vocк carregar seus dados de um arquivo , mais do que й conhecido antecipadamente ( em termos de dados que estб sendo carregado ).
Isto significa que vocк pode configurar em um enum os dados que serгo carregados com antecedкncia , por isso nгo hб necessidade de utilizar as caracterнsticas dinвmicas do PVARS para alocar a memуria.
Falando de memуria ...
Memуria
Este й um argumento jogado em torno de um monte , que й simplesmente errado.
A linha de fundo й que PVARS sгo consideravelmente pior do que matrizes para memуria.
Em primeiro lugar os dados que estгo sendo armazenados й do mesmo tamanho , independentemente de onde ele й , para que imediatamente coloca ambos os sistemas em pй de igualdade.
Alйm desta PVARS precisa para armazenar o nome da variбvel ( geralmente duas vezes - uma em seu modo e uma vez na tabela de pesquisa ) e eu tenho certeza que hб despesas adicionais da tabela de pesquisa.
Algumas pessoas afirmam que PVARS sгo ъteis se vocк tem apenas alguns jogadores , mas se esse й o caso , por ter "MAX_PLAYERS" definido para 500 ? Crescer o seu servidor com vocк comunidade - sim , vocк vai querer alguma margem de manobra em seus tamanhos de matriz para o crescimento , mas se vocк contagem jogador mбximo й 20 , й improvбvel que vocк obter 480 novos jogadores super rбpido.
De fato o crescimento de seu servidor com a sua comunidade й um bom conselho , independentemente do que vocк estб pensando.
Se vocк tem um bem definido "MAX_PLAYERS" macro e seu servidor й relativamente completo , matrizes vai usar menos memуria que PVARS.
Se o seu servidor estб em um perнodo de calmaria , entгo vocк pode estar usando um pouco mais de memуria para armazenar os varaibles atualmente nгo utilizadas , mas dado que a maioria dos modos sгo menos que 1% de RAM disponнvel , por que isso importa muito para vocк?
Restabelecer
"PVARS repor quando um jogador entra ou sai". Se esta й a sua principal razгo para usar PVARS entгo que й francamente pouco preguiзoso! Sim, redefinir automaticamente, mas IMHO isso nгo й o suficiente de uma razгo, por si prуpria a usб-los - especialmente dada a fбcil repor uma variбvel й *.
Conclusгo
Nгo estou reclamando PVARS - como eu disse que eles tкm seus usos , mas as pessoas precisam entender quando eles devem ser usados e que eles nгo sгo uma substituiзгo total de matrizes normais, nгo chega nem perto!
Crйditos :
♣ ****** ( Tуpico Original ) : Aqui
♣ Diogo123 ( Traduзгo )
Obs : Nгo Usei o ****** Translate eu usei dicionario -qq '-'
Provas que ele deixou eu traduzir o tutorial dele

Aqui
Espero ter ajudado os que tem duvidas sobre isto ou aqueles preguiзosos que nem tem capacidade de traduzir '-'

@edit
Mudei a fonte e o tamanho das letras

