Ir para conteúdo
Entre para seguir isso  
Pivizz

Scripting Dictionary

Recommended Posts

Pivizz    1
Pivizz

Scripting Dictionary

Antes de tudo

Olá comunidade OTServ Networks. Venho através desse tutorial facilitar a vida de muitos scripters.

Trago a vocês o Scripting Dictionary. Uma forma mais simples de entender aquelas siglas ou palavrinhas chatas encontradas em todos os scripts e que poucas pessoas sabem o significado ou o motivo de estar ali.

Vocês também podem ajudar a aumentar o conteúdo desse dicionário enviando-me as palavras que vocês gostariam de serem adicionadas. Para isso, poste nesse mesmo tópico.

Estou disposto a atualizar sempre que for preciso o tópico, mas, caso algum imprevisto aconteça, a moderação está liberada para editar, adicionando dicas e palavras, sempre seguindo o mesmo padrão de postagem, enfatizando as palavras. Assim teremos uma melhor organização.

Por fim, gostaria que todos os scripters, experientes ou não, e principalmente os que estão iniciando sua possível carreira na área, dentro da comunidade OTNet, lessem e corrigissem, se necessário.

 

 

Começando

 

array

Array é uma variável onde há dois ou mais valores. É conhecido como vetor ou lista. Dependendo do caso, também pode ser conhecida como matriz. Cada valor dentro da array tem sua posição que é dada por um índice e que, geralmente, segue uma sequência de números inteiros. Pode ser local ou global.

Exemplo: local arr = {1, 2, "valor 3", 503, variavelTeste}

 

cid

Normalmente uma variável onde é atribuida a identificação da criatura que, em muitos casos, está executando o script. A sigla cid vem do inglês Creature Identification.

Exemplo: if isPlayer(cid) == TRUE then

 

concatenação

Éo ato de juntar uma ou mais strings. Em Lua, a concatenação é feita com o simbolo Ponto-Ponto (..)

Exemplo: print("Skyen".."_".."Hasus")

A saída gerada por esse comando seria: Skyen_Hasus.

 

do

1. Normalmente usada no começo de funções que exercem alguma ação. Pode ser usada separada (sozinha) ou em alguma condição (ex. if). Tem sua tradução mais próxima da palavra fazer.

2. É utilizado em conjunto com o FOR, tendo de estar, obrigatoriamente, no final da linha em que há o loop for.

Exemplo: doSendMagicEffect(pos, effect)

Exemplo: for i =1, 10 do

 

else

É utilizado em condições. Caso todas as outras não sejam verdadeiras, o else será executado. É sempre usado sozinho e pode ser entendido como "Se não:". É utilizado em conjunto do if.

Exemplo:

if 1 > 2 then
else
-- script
end

elseif

Assim como o else, é utilizado em conjunto do if e serve para verificar se há outra possível condição. Pode ser entendido como "Ou se:".

Exemplo:


if 1 > 2 then
elseif 1 < 2 then
--script
end

end

End é utilizado para fechar todas as condições, inclusive o loop for. Significa FIM. Tudo o que abre (if e for) deve ser fechado com um end.

Exemplo:

if 1 > 2 then
else
-- script
end

get

É muito encontrada em funções, onde sempre é retornado um valor, nulo ou não. Get, em inglês, no nosso caso, tem a tradução mais próxima de obter. As funções que começam com get, nunca estarão sozinhas, e sim, dando valor a alguma variável ou comparado a algo.

Exemplo: local level = getPlayerLevel(cid)

 

if

Obrigatoriamente deve ter em um script. Claro, há excessões, sempre há excessões. Serve para impor uma condição. Essa condição pode ser verdadeira ou falsa. Caso seje verdadeira, a continuação do script continuará até encontrar um END, caso contrário, verificará os elseifs e se não for verdadeiro com nenhum, havendo um else, será executado o código a partir dele.

A palavra if é proveniente do inglês e significa SE.

Exemplo: if level >= 30 then -- (Se level maior ou igual a 30, então)

 

is

Is, no começo de funções, é para fazer uma verificação. Sempre é usada em alguma condição e tem seu significado mais próximo da palavra é.

Exemplo: if isPlayer(cid) == TRUE then

 

loop

Loop é o nome dado a função que é executada várias vezes até que haja a condição para que ele pare. O mais utilizado é o for, mas também, na linguagem LUA temos o while e repeat.

Exemplo: for i = 1, 10 do

 

parâmetros

Parâmetros de uma função são todas as variáveis que se encontram entre os parênteses.

Exemplo: doRemoveItem(uid) -- uid é o parâmetro da função doRemoveItem

 

syntax sugars

São as facilidades que a linguagem de programação permite ao programador.

Exemplo 1:


var = "Skyen Hasus"
print(string.upper(var)) -- Normal
print(var:upper()) -- Syntax Sugar

Ambas as saídas geradas seriam: SKYEN HASUS.

 

Exemplo 2:


teste = function(s) -- Normal
end
function teste(s) -- Syntax Sugar
end

Apesar de parecerem legais, evite usar Syntax Sugars quando desnecessário, pois podem causar problemas se usadas incorretamente.

 

set

Palavra utilizada no começo de nomes de funções que estabelecem valor de algo. É muito utilizado por iniciantes apenas para quests, mas tem muito mais importância que isso. No português, tem o significado mais próximo de estabelecer. (conteúdo a ser ampliado)

Exemplo: setPlayerStorageValue(cid, 3001, 1)

 

string

Corresponde a um texto, as strings sempre são entre aspas.

Exemplos: "string" ou 'string'

Note que há dois tipos de aspas, as duas são válidas.

 

then

Utilizado em conjunto do if ou do elseif. Pode ser entendido como ENTÃO. Sempre será encontrado no fim da linha em que haja as condições citadas.

Exemplo: if getPlayerStorageValue(cid, 3001) > 0 then

 

variáveis

Variáveis são valores reservados na memória ram do computador para serem utilizados durante o script. Pode-se entender por variável, quando é encontrado a palavra var ou variable (em inglês). Variáveis podem ser locais ou globais, nesse último caso, tendo uso em mais de uma função.

Exemplo: local level = getPlayerLevel(cid)

Exemplo: global estatistica = estatistica + 1

 

 

Você também pode ajudar

Perguntando o que você não entendeu é uma forma de ajudar. Poste suas dúvidas aqui, não tenha vergonha.

Outro modo de ajudar, é postando mensagem com as palavras que você não sabe o significado ou sabe e não está aqui.

Quero deixar claro que eu não sou expert e não saberei tudo. Pesquisarei e tentarei deixar o mais claro possível todo o conteúdo aqui contido.

Eu gostaria que esse dicionário funcionasse como a wikipedia, onde todos podem editar e corrigir. Mas como não há a possibilidade de todos editarem, postem.

 

 

Créditos

Créditos são de todos que ajudaram a fazer esse dicionário. Segue a lista abaixo:

Pivigu

Nord

Skyen Hasus

 

 

Se você editou algo, ponha seu nome.

Se você postar conteúdo a ser adicionado, seu nome irá ser posto aqui.

 

Atualizações

05.08.2009 - Adicionado as palavras array, loop e set.

06.08.2009 - Adicionado as palavras if, else, elseif, end, string (Nord) e then.

06.08.2009 - Atualizado a palavra do.

09.08.2009 - Adicionado as palavras concatenação e syntax sugars. (Skyen Hasus)

18.08.2009 - Atualizado a palavra end. (marcryzius)

Editado por Pivizz

Compartilhar este post


Link para o post
Mock    32
Mock

Comentario: Contanto que nao seje "meu primeiro monstro" eu aprovo ^^

 

Aprovadoico_aprovado.png & Movidoicon_movido.giffechado22xnux7.gif

 

mock.png

Compartilhar este post


Link para o post
Fantom    1
Fantom

Parabéns pelo tutorial,

Axo que vou entrar nessa área de script tbm,

Vou ver se consigo algo... =)

A começar pelo seu tutorial que ja está ensinando muita coisa...

Obrigado!

 

Att.

Compartilhar este post


Link para o post
marcryzius    0
marcryzius

seria bom que você colocasse no topico algo falando sobre = if,then,end,[[elseif], e [else]].

Compartilhar este post


Link para o post
Sergimmm    0
Sergimmm

Cara ótimo tutorial, meus parabéns, mas se você quiser dar uma aula de StorageValue eu te pago uns ots, se tiver interessado [email protected]

Compartilhar este post


Link para o post
Pivizz    1
Pivizz

Eu não dou aula :P

Mas é bem simples de entender

setPlayerStorageValue(cid, storage, value)

Esse comando vai colocar um valor no storage do jogador. Os storages são guardados na database do servidor e servem como um registro. Os dois valores (storage e value) só podem ser números inteiros.

 

getPlayerStorageValue(cid, storage)

Pega o valor do storage.

 

Agora, um exemplo. Acho que fica mais fácil de entender

O jogador foi lá e clicou no baú para pegar um item. Não queremos que esse jogador pegue o item novamente, então vamos fazer assim

if getPlayerStorageValue(cid, 3000) < 1 then -- Pega os dados do storage 3000 na database e verifica se é menor que 1 (se não existe é -1)

doAddPlayerItem(cid, item, count)

setPlayerStorageValue(cid, 3000, 1) -- Poe o valor 1 do storage 3000

else

doSendTextMessage(cid, "Você já completou a quest.")

end

 

 

@marcryzius

Vou por hoje de tarde essas palavras, mas é meio difícil explicar :P

Compartilhar este post


Link para o post
Nord    2
Nord

Boa Pivigu, quando fui iniciante n sabia essas coisas e atualmente nunca tinha pensado em tutorial parecido, então vou ajudar.

 

String

Corresponde a um texto, as strings sempre são entre aspas.

Exemplos: "string" ou 'string'

Note que há dois tipos de aspas, as duas são válidas.

 

Se vc quer alguns nomes comuns para variáveis podemos usar:

store, status, text, player, pos

Essas são as variáveis que mais me facilitam no scripting.

Por ex:

local text = "Attack!" [color="Gray"]-- É uma string[/color]
local store = getPlayerStorageValue(cid, 1234) [color="Gray"]-- É um value[/color]
if store == -1 then
    local pos = getCreaturePosition(cid) [color="Gray"]-- É uma array[/color]
    doSendAnimatedText(pos, text, TEXTCOLOR_RED)
end

Editado por Nord

Compartilhar este post


Link para o post
Boliinha    0
Boliinha

po podia separar por Spoilers pra fica mais organizado..

 

Tipo, as funções relacionadas ao:

[spoiler=Funções IF]As funções do if

 

 

[spoiler=Loops]os Loops

 

Compartilhar este post


Link para o post
Pivizz    1
Pivizz

@Nord

É ótimo que pessoas como você, experientes, contribuam. Tenho mais uma lista de pessoas que acho que podem ajudar. Vamos ver se elas tem a mesma vontade de ajudar como você.

Obrigado:):)

 

@Boliinhas

Não sei se ficaria melhor organizado. Acho que isso só bagunçaria o tópico. Sem falar que eu estou organizando tudo em ordem alfabética, acho que fica mais fácil de se achar desse modo, ainda mais se der certo e o dicionário aumentar o tamanho consideravelmente.

Editado por Pivizz

Compartilhar este post


Link para o post
paladinpk    1
paladinpk

Muito bom tutorial,porem script e dificel pq é´´´´ em ingles e eu acho complicado so ruim de ingles

Compartilhar este post


Link para o post
jao_jf    0
jao_jf

AEW vlw me ajuda bastante vlw msm!!!^^

Compartilhar este post


Link para o post
Mock    32
Mock

Spoilers apenas estragam o topico.

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf
Concatenação é o ato de juntar uma ou mais strings. Em Lua, a concatenação é feita com o simbolo Ponto-Ponto (..)

 

Exemplo:

print("Skyen".."_".."Hasus")

A saída gerada por esse comando seria: Skyen_Hasus.

 

Syntax Sugars são as facilidades que a linguagem de programação permite ao programador.

 

Exemplo 1:

var = "Skyen Hasus"

print(string.upper(var)) -- Normal
print(var:upper()) -- Syntax Sugar

Ambas as saídas geradas seriam: SKYEN HASUS.

 

Exemplo 2:

teste = function(s) -- Normal
end

function teste(s) -- Syntax Sugar
end

 

Apesar de parecerem legais, evite usar Syntax Sugars quando desnecessário, pois podem causar problemas se usadas incorretamente.

abc

Compartilhar este post


Link para o post
henzy    0
henzy

muito bom! me ajudo muito... parabens

Compartilhar este post


Link para o post
Eventide    7
Eventide

Só uma observação sobre syntax sugar:

teste = function(s) -- Normal
end 
function teste(s) -- Syntax Sugar
end

 

sempre achei que fosse o contrario:

teste = function(s) -- Syntax Sugar
end 
function teste(s) -- Convencional
end 

 

outro exemplo de syntax sugar muito comum:

function new(class)
return setmetatable({ }, {__index = class})
end 

MyClass = {}
myObject = MyClass:new()

Editado por Eventide

Compartilhar este post


Link para o post
marcryzius    0
marcryzius

um pequeno erro nessa parte.

 

end

End é utilizado para fechar todas as condições, inclusive o loop for. Significa FIM. Tudo o que abre (if, elseif, else ou for) deve ser fechado com um end.

 

elseif e else nao necessitam de end

Compartilhar este post


Link para o post
Pivizz    1
Pivizz

Necessitam sim.

if a > b then

--código

elseif b > c then

--código

end

 

Claro, o end é do if, mas também pode ser considerado do elseif, não?

Compartilhar este post


Link para o post
marcryzius    0
marcryzius

up /z\

 

não

 

veja esse caso ridiculo

if getPlayerStorageValue(cid,1557) == 1 then

doSummonCreature("Demon", pos)

elseif getPlayerStorageValue(cid,1557) == 2 then

doSummonCreature("Dragon", pos)

elseif getPlayerStorageValue(cid,1557) == 3 then

doSummonCreature("Dwarf", pos)

else

doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ghordon!!!")

end

 

existem 2 elseifs mas não quer dizer que eu tenho que por ends pra eles ou pro else que tanbem esta nesse script.

 

ou seja não importa a quantidade de else ou elseif numca terão que ser fechado. ja que o end so server pro if nesse caso.

 

então seria errado ensinar dessa forma porque os iniciantes não entenderiam bem e sairiam pondo ends em todos os elses e elseifs.

Compartilhar este post


Link para o post
Pivizz    1
Pivizz

Ok, você tem razão. Corrigido.

 

Obrigado

Compartilhar este post


Link para o post
Nord    2
Nord

Só pra dar uma clareada:

elseif = end+if

else = end+if not(...)

 

O not só coloquei pra saber que o else é pra todos os outros casos.

Mas vcs já haviam entendido :D, só pra complementar msm.

Vlw por ter posto meu nome na lista.

 

-----Nova Edição-----

Mútiplas variáveis

Não sei o nome correto para isso, mas é possível colocar várias variáveis de uma vez só:

 

Modo normal

local x = 15
local y = 20
local t = 1

 

Múltiplas variáveis

local x, y, t = 15, 20, 1

Editado por Nord

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×