Jump to content

[5] - Aplicações em OTservers (I)


Omega

Recommended Posts

Aplicando em OTServers - I



Muito foi desenvolvido desde o início dos OTServers e, embora muitos não tenham observado isso, esse desenvolvimento foi lento. Inicialmente, era muito difícil criar scripts para OTS's, porque o suporte para tal era pequeno. Os primeiros scripts desenvolvidos eram somente actions e spells. Movements, globalevents, talkactions e, finalmente, creaturescripts foram introduzidos posteriormente. Por isso, vamos começar com aplicações básicas de actions, que são scripts que definem uma função chamada quando o jogador usa um item.


Antes disso, vamos começar entendendo como funcionam os OTServers: o código-fonte, que é compilado e se transforma, em última instância, naquele executável que serve para abrir o servidor, é feito em C++, uma outra linguagem de programação. Essa parte define toda a base do servidor e é mais complicada de se editar, pois toda vez ele terá que ser compilado novamente. Por isso, utiliza-se Lua, uma linguagem de fácil edição. O código-fonte ou source code ou simplesmente, sources do servidor define o que acontecerá com as informações recebidas pelo cliente. Quando um jogador clica em um item, esse clique é enviado para o servidor, que encaminha essa resposta para um script Lua do tipo action. O servidor, então, lê esse código Lua e o executa.


E é aí que nós, scripters Lua, entramos.


Até agora abordamos um código para um baú de quest, mas com funções fictícias. Os códigos-fonte mais usados são os desenvolvidos pelo The Forgotten Server Team, mais conhecidos como TFS. Nele, existem várias funções que podemos usar em nossos códigos Lua. Vamos usar algumas funções dele a seguir, para criarmos um script de um baú de quest de verdade.


Primeiramente, vamos pensar nas restrições: um baú de quest deve poder ser aberto apenas uma vez, certo? Essa é nossa primeira condição. Além disso, talvez queiramos fazer um baú específico para uma vocação. Essa será nossa segunda condição. Então, o jogador terá duas condições para cumprir e deverá receber uma mensagem avisando se não cumprir cada condição. Caso ambas sejam cumpridas, ele deverá ganhar a recompensa e algo que evite que ele abra novamente o baú. Vamos criar um esboço do código:


Agora precisamos traduzir isso para as funções utilizadas e entendidas pelo servidor: a função básica, que é chamada quando um item é usado, se chama onUse e seus dois primeiros parâmetros são cid e item. Precisamos entender o que é o cid. Cada criatura dentro do servidor tem um número de identificação único para ela. Esse número é denominado cid – creature identification. Para executarmos alguma função para uma criatura ou para conseguirmos informação sobre essa criatura, precisaremos fornecer seu número de identificação como parâmetro dessa função. Segue no link uma lista de algumas das várias funções existentes nos servidores 8.6 – aqui.



Várias informações dos jogadores podem ser guardadas no banco de dados do servidor (mais sobre isso no capítulo de Banco de dados e SQL). Inclusive informações que chamamos de storages, que podem ser usados para guardar números e strings e não são apagados quando o jogador loga ou morre. Para manipulá-los, podemos utilizar a função setPlayerStorageValue(cid, storageKey, value) e getPlayerStorageValue(cid, storageKey). Cada storage tem uma chave de identificação (storageKey). Se ele não tiver um valor definido, seu valor padrão é -1. Portanto, podemos utilizar essas funções para verificar se o jogador já fez ou não a quest, dessa forma:



if getPlayerStorageValue(cid, storageKey) == -1 then
jogador não fez a quest!
else
jogador já fez a quest!
end

Utilizando a lista das funções, tente selecionar as que você deverá usar para o script do baú.



OBS.: deve-se ter cuidado para não repetir o número de um storageKey, pois pode haver conflito entre dois scripts diferentes. Assim, você pode escolher aleatoriamente um número com 6 ou mais algarismos, fazendo com que a chance de repetição seja muito pequena ou listando os storages que você já usou e conferindo para não repetir. Para verificar quais storages já foram usadas, utilize essa talkaction.


Assim como várias outras constantes do servidor, cada vocação é associada a um número: sorcerer = 1, druid = 2, paladin = 3 e knight = 4. Para promotions, soma-se 4 ao número da vocação. Para ver o valor dessas e das outras constantes, vá na pasta data do seu servidor e procure pelo arquivo 000-constant.lua dentro da pasta lib.


O script do nosso baú deverá ficar com uma cara mais ou menos assim:



http://pastebin.com/BVQVzqhi



Não se preocupe se você ainda não entendeu totalmente esse código, em breve você poderá fazê-lo completamente sozinho, se já não pode. Essa foi apenas uma introdução a aplicações em OTServers.


Link to comment
Share on other sites

×
×
  • Create New...