Scripting Intermediário! - 2
Lista de Aulas:
Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/
Aula 2: http://herc.ws/board/topic/200-script-intermedi%C3%A1rio-aula-2/
Aula 3: http://herc.ws/board/topic/201-script-intermedi%C3%A1rio-aula-3/
Aula 4: http://herc.ws/board/topic/203-script-intermedi%C3%A1rio-aula-4/
Aula 5: http://herc.ws/board/topic/213-script-intermedi%C3%A1rio-aula-5/
Aula 6: http://herc.ws/board/topic/228-queries-sql-aula-6/
Aula 7: http://herc.ws/board/topic/239-script-intermedi%C3%A1rio-aula-7/
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.