[Tutorial] PVars - Quando, e Quando nгo estб, a usб-los
#1



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
Reply
#2

Se pediu permissгo pra dar copy & past?
Reply
#3

Muda a fonte ai porque realmente dуi os olhos pra ler isto xD
Reply
#4

Tб parecendo teste do exйrcito isso aн. Aumenta a letra nй camarada ...
Reply
#5

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Tб parecendo teste do exйrcito isso aн. Aumenta a letra nй camarada ...
Ok vo mudar espera um pouco

Quote:
Originally Posted by Gustavo_Araujo
Посмотреть сообщение
Muda a fonte ai porque realmente dуi os olhos pra ler isto xD
Ok '-'

Quote:
Originally Posted by leonardo1434
Посмотреть сообщение
Se pediu permissгo pra dar copy & past?
Sim pedi '-' pode ver no final do tуpico a autorizaзгo dele via mp ...
Reply
#6

pawn Код:
Invalid Private Message specified. If you followed a valid link, please notify the administrator
Diz isso lб... tira SS !
Reply
#7

tira SS aumenta a letra ta ruim de ler ainda '-'
Reply
#8

Tira SSІ

Aumenta os Subtitulos para 4 (ou 5)

e fonte do tutorial para 3(ou 4)

do resto Parabйns mais uma ajuda para todos nуs
Reply
#9

Quote:
Originally Posted by GhosT_[]
Посмотреть сообщение
Tira SSІ

Aumenta os Subtitulos para 4 (ou 5)

e fonte do tutorial para 3(ou 4)

do resto Parabйns mais uma ajuda para todos nуs
O.o Okay pera vo upar a ibagem

Quote:
Originally Posted by Math3us
Посмотреть сообщение
tira SS aumenta a letra ta ruim de ler ainda '-'
e.e Ok

Quote:
Originally Posted by leonardo1434
Посмотреть сообщение
pawn Код:
Invalid Private Message specified. If you followed a valid link, please notify the administrator
Diz isso lб... tira SS !
Ok pera um pouco

Aqui http://imageshack.us/photo/my-images...emttulosd.png/
Reply
#10

bom tutorial, mas pode melhorar +.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)