Jump to content
Sign in to follow this  
Senos

Script Intermediário (Aula 2)

Recommended Posts

Scripting Intermediário! - 2

Lista de Aulas:

Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/


 
Assunto da aula:
- Arrays
 
As arrays não passam de um conjunto de variáveis, que são usados dentro de loops que são For e Whiles como ensinados na aula anterior, podem servir de Banco de Dados, já que podemos guardar/alterar/modificar/remover valores dento delas e certamente economizam certas linhas se bem usadas no script. São uma das melhores ferramentas para scripters hoje em dia.
 
Array, não possui tradução para português, mas podemos entender como Conjunto de Variáveis, o nome já diz tudo, não? Vamos ver as maneiras certas para a utilização de uma array:

+==========+======+=======+|Variável  | Norm | Array |+==========+======+=======+|$Str$     | OK!  | OK!   |+----------+------+-------+|$@Str$    | OK!  | OK!   |+----------+------+-------+|@Str$     | OK!  | OK!   |+----------+------+-------+|#Str$     | OK!  | ERRO! |+----------+------+-------+|Str$      | OK!  | ERRO! |+----------+------+-------+|$Int      | OK!  | OK!   |+----------+------+-------+|$@Int     | OK!  | OK!   |+----------+------+-------+|@Int      | OK!  | OK!   |+----------+------+-------+


E agora temos algumas variáveis que dão erros, caso o uso for desta maneira:

#str$ - ERROStr$ - ERRO

 
Porque ocorreram esses erros? o_o
Simplesmente porque as arrays não podem ser "setadas" à um jogador, por isso existem as variáveis normais. 
 

Sintaxe da Array:

setarray <Nome da Array>[<Index>],<Valor>{,<Valor>,...,<Valor>};

 
Exemplos:

setarray @i[0],1000,2000,3000,4000;

 

@array [0] = 1000
@array [1] = 2000
@array [2] = 3000
e @array [3] = 4000
 
Agora se eu usar após o exemplo anterior (lembre-se, APÓS):

setarray @array[1],1,2; 

 

@array[0] = 1000 (Pois o 0 não foi alterado, e somente o 2, 3 se a index anterior for 0).
@array[1] = 1
@array [2] = 2
@array [3] = 4000
 
Temos o comando cleararray, que limpa a array:

cleararray <nome do array>[<primeiro valor para alterar>],<valor>,<número de valores para definir>;

 

Esse comando vai mudar o valor de uma array e ao mesmo tempo adicionar outro. Exemplo:

setarray @i[0],1000,2000,3000,4000;

 

cleararray @i[0],0,6; Isso transformará todos os valores em 0.
cleararray @i[0],245,1; Isso transformará o valor do @i[0] == 1000, para 245.
cleararray @i[1],345,2; Isso transformará o valor do @i[1], @i[2] para 345.
 
Simples, não? Ensinaremos então, o comando getarraysize que é muito útil também no Loop (For):
 
Essa função retorna o número de valores que estão contidos dentro de uma array, no caso, um valor específico. Exemplo:

setarray @i[0],1000,2000,3000,4000;

set @i_size,getarraysize(@i); Isso vai fazer com que @i seja igual a 4, pois temos 4 "indexes".
 

Agora se eu fizer:

setarray @i[0],1000,2000,3000,4000,0;

set @i_size,getarraysize(@i); Será de qualquer maneira 4, pois 0 é igual a nada, então não contará.
 

Existe também o copyarray, como podemos ver a utilização desse:

copyarray <array de destino>[<primeiro valor>],<array fonte>[<primeiro valor>],<número de elemento a serem copiados>;

 
Esse comando faz com que você copie o valor de uma array, vejamos:

setarray @i[0],1000,2000,3000,4000;

copyarray @i2,@i[0],@i[1]; Essa array @i2 terá o primeiro valor 1000, e o segundo 2000.

 

Mas porque Wolf? Vejamos, o @i2[0] == 1000, e o @i[1] == 2000, pois copiamos o valor index de uma outra array.
E os outros valores da array? Se os outros valores da array não foram copiados, retornaram 0 em caso de uso incorreto.

 

Vamos falar agora do comando DeleteArray. Esse comando vai deletar um VALOR ESPECÍFICO em uma array.

setarray @i[0],1000,2000,3000,4000;

 

Agora caso eu usar:

deletearray @i[0],1;

 

O deletearray irá DELETAR o valor 1000, e irá mover os outros, se tornando:

setarray @i[0],2000,3000,4000;

 

Então @i[0] passará a ser 2000 e não mais 1000, e assim por diante!
 

Fim da aula de Arrays, e vejamos para finalizar, um exemplo de uso:

mes "Deseja registrar sua banda em nosso concurso?";if (select("Sim:Não")==2) close;next;input @banda$;setarray $banda$,[getarraysize($banda$)+1],@banda$; // Essa array adicionará o nome da banda (@banda$) na array $banda$.next;mes "Banda registrada com sucesso!";for (set @i,0; @i <= getarraysize($bandas$); set@i, @i+1) {	mes $bandas$,[@i];} set registrado$,@str$; // Isso deixará o jogador registrado permanentemente no script.close;

 

Agradeço ao Keoy por ter me instruído a criar as aulas, ser meu professor antigamente, e eu por criar as aulas com base nas aulas que ele fazia, adicionando os comandos copyarray, deletearray, cleararray e atualizar o snippet.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.