Welcome to xTibia - Sua comunidade de Otserv e Tibia

Registre-se para utilizar nossas ferramentas e baixar conteúdos. Quando registrado e logado em sua conta, lhe garantimos uma experiência incrível em nossa comunidade!

MaXwEllDeN

Como funcionam os scripts?

28 posts neste tópico

Como funcionam os Scripts?



Você já deve ter se perguntado como os scripts funcionam ou não. Por exemplo: Como o servidor sabe que quando eu apertar com o botão direito em um Health Potion ele terá que healar o player alvo?

Em primeiro lugar devemos entender o que são callbacks. Do modo mais simples callback é algo que acontece devido a uma reação, é como a

Registre-se para ver link(s).

que diz que toda ação gera uma reação, esse callback é a nossa reção, é uma função que vai ser executada assim que algo acontecer, no caso do Health Potion assim que ele for usado.


Quando um item é usado ele provoca a chamada de um callback dessa função:



function onUse(cid, item, fromPosition, itemEx, toPosition)
end


Max, que parâmetros são esses? :hum:
– É simples.




cid - É o CreatureID de quem usou o item.

NOTA: Seu OT possui várias criaturas, para seu servidor, todas as criaturas são representadas por um Número Único(Não é possível ter duas criaturas com o mesmo UniqueID(UID)). Esse número nunca é o mesmo, sempre que você loga no servidor ele muda, e é um número geralmente gigante, do tipo 11789789. Para o programador não é necessário conhecer o número, só saber que ele é representado na maioria das vezes pelo cid(CreatureID).


item -É uma tabela contendo as informações do item que foi usado, em servidores 8.60 essa tabela tem a seguinte estrutura(provavelmente em versões superiores a estrutura é a mesma):
 

item = {actionid = 0, uid = 70000, itemid = 7618, type = 18}
Onde actionid é a actionid do item.

uid é o UniqueID do item, é parecido com o CreatureID das criaturas, só muda que ele serve para identificar itens, não criaturas, mas a ideia dele é a mesma, ele serve para identificar um item entre todos os itens que tem no seu servidor.

itemid é o id do item que foi usado, no caso um Health Potion.

type - Ele indica a quantidade de itens que tem no grupo que foi usado. Nesse caso eu tinha 18 Health Potions.

 



fromPosition - Essa é a posição que os Potions estavam quando eu usei eles.

itemEx - Se o alvo for um item vai retornar uma tabela igual à item, mas com as informações do item-alvo. Se o alvo for uma criatura, o itemEx.uid, será o CreatureID do alvo.

toPosition - Retorna uma tabela da posição do alvo(Do SQM que estava na mira do Crosshair).

 

O Script do Health Potion ficaria +/- assim:
 

local config = {
        min_heal = 100, -- Minimo que vai healar
        max_heal = 200, -- Máximo que vai healar
        empty = 7636, -- Id do Potion vazio
}
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if isCreature(itemEx.uid) then
                doCreatureSay(cid, "Aaaah...", 19)
                doSendMagicEffect(toPosition, 12)
                doCreatureAddHealth(itemEx.uid, math.random(config.min_heal, config.max_heal))
                doTransformItem(item.uid, config.empty)
        else
                doPlayerSendCancel(cid, "You cannot use this object.")
        end
 
        return true
end


Funções usadas:

isCreature(uid) - Retorna um booleano, que indica se o parâmetro dado é uma criatura.

doCreatureSay(uid, words, type) - Faz a criatura uid, falar as palavras que estiverem no parâmetro word, e type é o tipo da Talk. Esses são os types existentes:

Types:
[spoiler]

TALKTYPE_FIRST = 1
TALKTYPE_SAY = TALKTYPE_FIRST
TALKTYPE_WHISPER = 2
TALKTYPE_YELL = 3
TALKTYPE_PRIVATE_PN = 4
TALKTYPE_PRIVATE_NP = 5
TALKTYPE_PRIVATE = 6
TALKTYPE_CHANNEL_Y = 7
TALKTYPE_CHANNEL_W = 8
TALKTYPE_RVR_CHANNEL = 9
TALKTYPE_RVR_ANSWER = 10
TALKTYPE_RVR_CONTINUE = 11
TALKTYPE_BROADCAST = 12
TALKTYPE_CHANNEL_RN = 13
TALKTYPE_PRIVATE_RED = 14
TALKTYPE_CHANNEL_O = 15
TALKTYPE_CHANNEL_RA = 17
TALKTYPE_MONSTER = 19
TALKTYPE_MONSTER_YELL = 20
TALKTYPE_LAST = TALKTYPE_MONSTER_YELL
[/spoiler]

doSendMagicEffect(pos, id) - Manda um efeito de ID, id, na posição pos.

Lista dos ids de efeito:
[spoiler]
CONST_ME_DRAWBLOOD = 0
CONST_ME_LOSEENERGY = 1
CONST_ME_POFF = 2
CONST_ME_BLOCKHIT = 3
CONST_ME_EXPLOSIONAREA = 4
CONST_ME_EXPLOSIONHIT = 5
CONST_ME_FIREAREA = 6
CONST_ME_YELLOW_RINGS = 7
CONST_ME_GREEN_RINGS = 8
CONST_ME_HITAREA = 9
CONST_ME_TELEPORT = 10
CONST_ME_ENERGYHIT = 11
CONST_ME_MAGIC_BLUE = 12
CONST_ME_MAGIC_RED = 13
CONST_ME_MAGIC_GREEN = 14
CONST_ME_HITBYFIRE = 15
CONST_ME_HITBYPOISON = 16
CONST_ME_MORTAREA = 17
CONST_ME_SOUND_GREEN = 18
CONST_ME_SOUND_RED = 19
CONST_ME_POISONAREA = 20
CONST_ME_SOUND_YELLOW = 21
CONST_ME_SOUND_PURPLE = 22
CONST_ME_SOUND_BLUE = 23
CONST_ME_SOUND_WHITE = 24
CONST_ME_BUBBLES = 25
CONST_ME_CRAPS = 26
CONST_ME_GIFT_WRAPS = 27
CONST_ME_FIREWORK_YELLOW = 28
CONST_ME_FIREWORK_RED = 29
CONST_ME_FIREWORK_BLUE = 30
CONST_ME_STUN = 31
CONST_ME_SLEEP = 32
CONST_ME_WATERCREATURE = 33
CONST_ME_GROUNDSHAKER = 34
CONST_ME_HEARTS = 35
CONST_ME_FIREATTACK = 36
CONST_ME_ENERGYAREA = 37
CONST_ME_SMALLCLOUDS = 38
CONST_ME_HOLYDAMAGE = 39
CONST_ME_BIGCLOUDS = 40
CONST_ME_ICEAREA = 41
CONST_ME_ICETORNADO = 42
CONST_ME_ICEATTACK = 43
CONST_ME_STONES = 44
CONST_ME_SMALLPLANTS = 45
CONST_ME_CARNIPHILA = 46
CONST_ME_PURPLEENERGY = 47
CONST_ME_YELLOWENERGY = 48
CONST_ME_HOLYAREA = 49
CONST_ME_BIGPLANTS = 50
CONST_ME_CAKE = 51
CONST_ME_GIANTICE = 52
CONST_ME_WATERSPLASH = 53
CONST_ME_PLANTATTACK = 54
CONST_ME_TUTORIALARROW = 55
CONST_ME_TUTORIALSQUARE = 56
CONST_ME_MIRRORHORIZONTAL = 57
CONST_ME_MIRRORVERTICAL = 58
CONST_ME_SKULLHORIZONTAL = 59
CONST_ME_SKULLVERTICAL = 60
CONST_ME_ASSASSIN = 61
CONST_ME_STEPSHORIZONTAL = 62
CONST_ME_BLOODYSTEPS = 63
CONST_ME_STEPSVERTICAL = 64
CONST_ME_YALAHARIGHOST = 65
CONST_ME_BATS = 66
CONST_ME_SMOKE = 67
CONST_ME_INSECTS = 68
CONST_ME_DRAGONHEAD = 69
CONST_ME_NONE = 255
CONST_ME_LAST = CONST_ME_DRAGONHEAD
[/spoiler]

doCreatureAddHealth(uid, amount) - Adiciona amount de health à criatura uid.
math.random(interval1, interval2) - Pega um número aleatório entre interval1 e interval2.
doTransformItem(uid, newid) - Muda o id do item uid, para newid.


doPlayerSendCancel(uid, text) - Manda uma mensagem text para criatura uid.


 

tv_Kb.png

 

 



Bem, esse aí é o script, agora só é você salvar, colocar na sua pasta actions/scripts e pronto!

– Max, se existem vários scripts na pasta actions/scripts, como meu OT sabe qual usar?
– Por causa das chamadas TAGs.
TAGs?
– Sim, é uma linha que é colocada no .xml para dizer ao seu servido que o Callback para um item x será a função daquele script.

As Tags das actions seguem esse modelo:
 

<action itemid = "7618" event = "script" value = "HealthPotion.lua" />

itemid - É o id do item, que ao ser usado o callback dele vai ser o script que está em value, no caso HealthPotion.lua
event - Indica o que vai acontecer quando usar o item, no caso vai ler o script. Não precisa se preocupar com isso por enquanto.
value - É o nome do script que tem o callback que você quer usar no item 7618

Exercício: Crie uma Action que quando eu usar uma Warlord Sword em alguém essa pessoa diga "Aí, isso doi". Poste a TAG também!

Resposta SÓ ABRA DEPOIS DE RESOLVER:
[spoiler]


function onUse(cid, item, fromPosition, itemEx, toPosition)
if isCreature(itemEx.uid) then
doCreatureSay(itemEx.uid, "Aí isso doi", 1)
end

return true
end

Tag:

<action itemid = "2408" event = "script" value = "Warlord.lua"/>

[/spoiler]

É isso aí pessoal, essa foi a primeira aula de Scriptwriting que eu escreví, espero que gostem :3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Max!
Essa aula com certeza, abre a mente das pessoas
que querem fazer scripts.
Parabéns!
Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado)

Ótimo tutorial Max.

[spoiler][pastebin]Hhf20Ruz[/pastebin][/spoiler] Editado por Skymagnum

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns e obrigado por compartilhar o conteúdo!

Aprovado e movido! [img]http://www.xtibia.com/forum//public/style_emoticons/default/button_ok.png[/img][size=4] [/size]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado)

[code]function onUse(cid, item, frompos, item2, topos)

if isCreature(itemEx.uid) then
doCreatureSay(itemEx.uid, "Aí, isso doi") then

end

return true
end

[/code] Editado por AlexandreGiacobo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado)


Muito bom Max!
Essa aula com certeza, abre a mente das pessoas
que querem fazer scripts.
Parabéns!
Abraços.


Obrigado ^^.


Ótimo tutorial Max.

[spoiler][pastebin]Hhf20Ruz[/pastebin][/spoiler]


Só uma coisinha desnecessária que você colocou Sky.

[pastebin]END9a7iW[/pastebin]


function onUse(cid, item, frompos, item2, topos)

if isCreature(itemEx.uid) then
doCreatureSay(itemEx.uid, "Aí, isso doi") then

end

return true
end


Quase certo, mas dá uma olhada. No seu script, o alvo do item está sendo chamado de item2. Tem duas soluções para o seu problema. Ou você muda o nome da variável para itemEx, ou usa item2 no lugar de itemEx.

Mudando o nome da variável para itemEx:

Antes:

function onUse(cid, item, frompos, item2, topos)
if isCreature(itemEx.uid) then
doCreatureSay(itemEx.uid, "Aí, isso doi") then
end
return true
end



Depois:

function onUse(cid, item, frompos, itemEx, topos)
if isCreature(itemEx.uid) then
doCreatureSay(itemEx.uid, "Aí, isso doi")
end
return true
end

Usando item2 no lugar de itemEx:

Antes:

function onUse(cid, item, frompos, item2, topos)
if isCreature(itemEx.uid) then
doCreatureSay(itemEx.uid, "Aí, isso doi") then
end
return true
end

Depois:

function onUse(cid, item, frompos, item2, topos)
if isCreature(item2.uid) then
doCreatureSay(item2.uid, "Aí, isso doi")
end
return true
end

Abraço! Editado por MaXwEllDeN

Compartilhar este post


Link para o post
Compartilhar em outros sites

-Max

Obrigado por corrigir só vi teu tópico e fiz correndo nem prestei atenção no que tava botando,agora posso olhar com calma.

Aguardando ansiosamente seus novos tutoriais/exercícios!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado)

só esqueceu de checar se é um player,n faria semtido uma slime falar ou um ghost falar que doi
ashusahusahsau

seriam sempre bom pensar nos minimos,tanto pela jogabilidade, quanto para n cometer erros como esquecer que os player podem estar usando utamo vita.

Editado por lordbug99

Compartilhar este post


Link para o post
Compartilhar em outros sites

[quote name='lordbug99' timestamp='1367438046' post='1514228']
só esqueceu de checar se é um player,n faria sendito uma slime falar ou um ghost falar que doi
ashusahusahsau

seriam sempre bom pensar nos minomos,tanto pela jogabilidade, quanto para n cometer erros como esquecer que os player podem estar usando utamo vita.
[/quote]

Cara, esse script é só pra exercitar as funções, não é útil pra ninguém um script como esse. E se fosse pra alguém usar em um servidor, seria mais viável criar uma tabela e dentro dela colocar o nome das criaturas que não falam, e se o alvo fosse uma delas, retornaria falso. Pois não são só players que falam, certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim mas to falando, mas porque as veses as pessoas esquecem de considerar fatores que podem prejudicar o script(no caso de script é meio inutel).

como um script que mate o player instanteneamente
[code]
function onSay(cid,param)
local player = getPlayerByName(param)
if player then
doTargetCombatHealth(cid, player, COMBAT_PHYSICALDAMAGE, -getCreatureMaxHealth(player), -getCreatureMaxHealth(player), CONST_ME_MORTAREA)
return true
end
end
[/code]

ve qual é o erro desse script?

Compartilhar este post


Link para o post
Compartilhar em outros sites

[quote name='lordbug99' timestamp='1367597757' post='1515046']
sim mas to falando, mas porque as veses as pessoas esquecem de considerar fatores que podem prejudicar o script(no caso de script é meio inutel).

como um script que mate o player instanteneamente
[code]
function onSay(cid,param)
local player = getPlayerByName(param)
if player then
doTargetCombatHealth(cid, player, COMBAT_PHYSICALDAMAGE, -getCreatureMaxHealth(player), -getCreatureMaxHealth(player), CONST_ME_MORTAREA)
return true
end
end
[/code]

ve qual é o erro desse script?
[/quote]
Tlg, esquecem mesmo. Mas o objetivo do tópico foi ensinar sobre as funções. Isso ai que você tá falando é PENSAR e isso é algo que eu não posso ensinar a alguém.

Bem, isso que você esqueceu de colocar não é considerado um erro, se o script carregar e rodar, está tudo certo, já que ele foi feito pra ser rodado assim, então não tem nenhum erro. A falta da verificação se a criatura existe já é falha do programador em não pensar na possibilidade da criatura não existir, e é como eu disse, isso depende se o cara sabe pensar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal o meu script ficou diferente, porque eu fiz ele diferente...

ai esta o script:

[spoiler]function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000)
doCreatureSay(cid, "Aaaaii Delicia",19)
doPlayerSendCancel(uid, PEEEEIDEEEI)
end

return true

[/spoiler]

nesse meu script além de ele falar a palavra, ele da 15000 de Experiencia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

[quote name='mazonifelipe' timestamp='1367613189' post='1515152']
Bom pessoal o meu script ficou diferente, porque eu fiz ele diferente...

ai esta o script:

[spoiler]function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000)
doCreatureSay(cid, "Aaaaii Delicia",19)
doPlayerSendCancel(uid, PEEEEIDEEEI)
end

return true

[/spoiler]

nesse meu script além de ele falar a palavra, ele da 15000 de Experiencia...
[/quote]

Não vai funcionar bem como no exercício. Olha ai está o seu código, comentado:

[code]
function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém
doCreatureSay(cid, "Aaaaii Delicia",19) -- O player que usou a espada vai falar Aaaaaai Delicia
doPlayerSendCancel(uid, PEEEEIDEEEI) -- Vai dar erro, 1º Porque uid não é uma criatura válida, segundo porque PEEEEEEEEEEEIDEI não é uma string("PEEEEEEEEIDEIIIII", com àspas)
end

return true -- return true no lugar errado
[/code]

Correção no seu código:

[code]
function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém
doCreatureSay(itemEx.uid, "Aaaaii Delicia",19) -- O player que estiver na mira da espada vai falar Aaaaaai Delicia
doPlayerSendCancel(cid, "PEEEEIDEEEI") -- Você vai receber uma mensagem dizendo: PEEIIDEEEI
return true -- No lugar certo
end
[/code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

[quote name='MaXwEllDeN' timestamp='1367634050' post='1515352']
[quote name='mazonifelipe' timestamp='1367613189' post='1515152']
Bom pessoal o meu script ficou diferente, porque eu fiz ele diferente...

ai esta o script:

[spoiler]function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000)
doCreatureSay(cid, "Aaaaii Delicia",19)
doPlayerSendCancel(uid, PEEEEIDEEEI)
end

return true

[/spoiler]

nesse meu script além de ele falar a palavra, ele da 15000 de Experiencia...
[/quote]

Não vai funcionar bem como no exercício. Olha ai está o seu código, comentado:

[code]
function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém
doCreatureSay(cid, "Aaaaii Delicia",19) -- O player que usou a espada vai falar Aaaaaai Delicia
doPlayerSendCancel(uid, PEEEEIDEEEI) -- Vai dar erro, 1º Porque uid não é uma criatura válida, segundo porque PEEEEEEEEEEEIDEI não é uma string("PEEEEEEEEIDEIIIII", com àspas)
end

return true -- return true no lugar errado
[/code]

Correção no seu código:

[code]
function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém
doCreatureSay(itemEx.uid, "Aaaaii Delicia",19) -- O player que estiver na mira da espada vai falar Aaaaaai Delicia
doPlayerSendCancel(cid, "PEEEEIDEEEI") -- Você vai receber uma mensagem dizendo: PEEIIDEEEI
return true -- No lugar certo
end
[/code]
[/quote]

[b]áa,, você poderia me explicar o porque? que o Return true tem que ficar naquele lugar?[/b]

Compartilhar este post


Link para o post
Compartilhar em outros sites

[quote name='mazonifelipe' timestamp='1367794067' post='1516332']
[quote name='MaXwEllDeN' timestamp='1367634050' post='1515352']
[quote name='mazonifelipe' timestamp='1367613189' post='1515152']
Bom pessoal o meu script ficou diferente, porque eu fiz ele diferente...

ai esta o script:

[spoiler]function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000)
doCreatureSay(cid, "Aaaaii Delicia",19)
doPlayerSendCancel(uid, PEEEEIDEEEI)
end

return true

[/spoiler]

nesse meu script além de ele falar a palavra, ele da 15000 de Experiencia...
[/quote]

Não vai funcionar bem como no exercício. Olha ai está o seu código, comentado:

[code]
function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém
doCreatureSay(cid, "Aaaaii Delicia",19) -- O player que usou a espada vai falar Aaaaaai Delicia
doPlayerSendCancel(uid, PEEEEIDEEEI) -- Vai dar erro, 1º Porque uid não é uma criatura válida, segundo porque PEEEEEEEEEEEIDEI não é uma string("PEEEEEEEEIDEIIIII", com àspas)
end

return true -- return true no lugar errado
[/code]

Correção no seu código:

[code]
function onUse(cid, item, fromPosition, itemEx, toPosition)
doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém
doCreatureSay(itemEx.uid, "Aaaaii Delicia",19) -- O player que estiver na mira da espada vai falar Aaaaaai Delicia
doPlayerSendCancel(cid, "PEEEEIDEEEI") -- Você vai receber uma mensagem dizendo: PEEIIDEEEI
return true -- No lugar certo
end
[/code]
[/quote]

[b]áa,, você poderia me explicar o porque? que o Return true tem que ficar naquele lugar?[/b]
[/quote]
Porque tipo, do modo que você colocou, ele estava fora da função e, fora da função principal ele é inútil, ai ele tem que ser colocado no final da função principal, antes do último end, pra indicar que ocorreu tudo bem!

Compartilhar este post


Link para o post
Compartilhar em outros sites


  • Conteúdo Similar

    • Por Rafael Medeiros
      Olá Pessoal,

      Como vocês devem ter reparado, fizemos algumas alterações na Hierarquia do XTibia.com, por este motivo, criamos este tópico para explicar tudo o que foi feito.

      Depois de várias semanas de discussão entre a Diretoria, finalmente definimos e aplicamos o modelo. O nosso objetivo é reconhecer o trabalho dos membros da Equipe, criando alternativas para que possam crescer dentro do XTibia.com.

      Sobre as alterações

      Optamos por criar mais um cargo entre a Moderação e a antiga Diretoria (antes composta por Administração, Direção e Coordenação) para conseguirmos atender a todos os setores dentro do XTibia de maneira mais eficaz, tendo a possibilidade de colocar pessoas para trabalhar nas áreas que têm mais conhecimento.

      Também abrimos mais espaço para as pessoas que querem ajudar na área de notícias, com a criação do cargo de Imprensa.

      Resumo das principais mudanças:

      - A NOVA DIRETORIA agora é composta por Administração, Sub-Administração e Direção.
      - Limpeza de Fórum está sob responsabilidade da Diretoria.
      - Cargo de Designer foi removido e as pessoas que atuavam nesta área passaram a ser "Moderadores de Design".
      - Criação da Imprensa e realocação dos Colaboradores de Imprensa para o novo cargo.
      - Cargo de Apoio alterado para Estagiário, que irá abrigar usuários aspirantes a vagas nas área de Moderação e Imprensa.
      - Moderação agora poderá assumir setores específicos (Ex.: Moderador de Downloads, Moderador de Scripting)
      - Coordenação será responsável por setores específicos dentro do XTibia (Ex.: Coordenador de Desenvolvimento, Coordenador de Imprensa)
      - Coordenação ainda não possui membros, estamos estudando possíveis promoções dentro da Equipe.
      - Membros da Equipe tiveram seus cargos migrados: Coordenação -> Direção / Direção -> Sub-Administração

      ------------
      Responsabilidades de cada setor:

      Administração
      Membros: Gustavo / Rafael Medeiros

      - Marca XTibia.com
      - Atualização de Sistemas e Estudo de Novas Tecnologias
      - Publicidade
      - Gerenciamento de membros da Diretoria


      Sub-Administração
      Membros: JV Chequer / Rodrigo

      - Acessoria direta da Administração
      - Gerenciamento do Site
      - Gerenciamento do Fórum
      - Gerenciamento de Parcerias
      - Atendimento a reports de Portal XTibia.com

      Direção
      Membros: Addict / Alessandro / Rodrigo Ferreira

      - Gerenciamento de Equipe
      - Orientar a Equipe XTibia.com
      - Organização do Fórum
      - Organização de Conteúdo
      - Atendimento a reports de Portal XTibia.com

      Coordenação
      Membros: - Nenhum -

      - Gerenciar seu setor
      - Auxiliar na Orientação da Moderação/Imprensa
      - Auxiliar na Orientação de Estagiários

      Imprensa
      Membros: Anokinha / Lordfire / Popp / RedZL

      - Trazer notícias para o XTibia.com (Tibia e OTServ)
      - Criação de Artigos e Matérias
      - Realizar Entrevistas e Reportagens
      - Auxiliar na organização do setor de notícias

      Moderação
      Membros: Alttli / BlackDream / Chapolin / FrozenMapper / Waleker

      - Moderar seu setor
      - Atender a reports de usuários
      - Esclarecer dúvidas de usuários (Quando for o caso...)
      - Auxiliar na Organização do Fórum
      - Auxiliar na Orientação de Estagiários

      Estagiários
      Membros: Sky / Voxnot

      - Auxiliar no atendimento de reports
      - Auxiliar na Organização do Fórum

      -----------
      Ainda faltam alguns ajustes, mas com o tempo vamos colocando ordem na casa.

      Caso tenham alguma dúvida sobre as alterações, favor postar neste tópico.

      Atenciosamente,
      Administração XTibia.com
    • Por vital900


      Registre-se para ver link(s).




      O projeto Elysium Online tem o objetivo de criar um novo servidor com RPG, diversão e novidades.
      O servidor trará muita inovação em todos os setores que compõe um OTServer, tentando melhorar ao máximo a experiência de se jogar em um servidor alternativo de Tibia.
      Com o passar do tempo, os servidores de Tibia foram perdendo sua antiga criatividade, originalidade e assim foram se estabelecendo servidores iguais, chatos e sem nada de novo.
      A monotonia é algo que o nosso projeto quer quebrar, trazendo novos conceitos aos servidores. Neste tópico apresentaremos tudo isto que queremos fazer ao criarmos o Elysium Online.




      Roleplay
      Elysium é um mundo enorme e medieval, onde existem vários contos, lendas, criaturas e monstros. No que se conhece atualmente, existem três massas de terra consideradas continentes — Lortherun, Gelida e Nalbina — e algumas ilhas, as quais podem ser paradisíacas e mortalmente perigosas ao mesmo tempo.

      Raças:

      Humanos

      Os humanos, raça jovem, porém predominante em Elysium, se adaptaram ao clima e terreno dos mais diversos espalhando-se por todo o mundo de Elyisum e firmaram os três reinos, que atualmente habitam os vastos continentes deste mundo. Estes são Beltheron, de Lotherun, Deltera, de Nalbina e Falkstold, de Gelida. Ao longo dos séculos sua população cresce rapidamente e declama qualquer terra que pode como suas e, consequentemente, entraram em contato com as mais diversas raças e povos, fazendo com que os humanos possam apresentar diferenças culturais imensas entre si.


      Personalidade: Os humanos apresentam as mais diversas personalidades, não é possível estabelecer um padrão para a personalidade e comportamento humano.

      Relações: é conhecido por todos, pois eles se sociabilizam com quem melhor se identificar.

      Aptidão: Estes podem manusear todos os tipos de armas existente no mundo de elysium e podem aprender todos os tipos de magia.

      Tendência: Os humanos apresentam os comportamentos nos extremos das características morais e éticas, sendo capaz encontrar o mais puro herói e o mais vil assassino dentre os humanos.

      Idiomas: Pode falar todas as cinco línguas de Elysium, dependendo com quem o humano convive.

      Nomes: Não existe um padrão para os nomes humanos, podendo ser utilizados até mesmo nomes de outras raças.

      Caricatura de um Humano:

      Registre-se para ver spoiler(s).

    • Por thiagozika157

      Olá Xtibianos estou trazendo um novo Update do Real Server que eu sempre estou modificando corrigindo erros, adicionando novos sistemas


      entre outras coisas bom ae galera esta ae o novo Update com varios erros corrigidos Real Server modificado.



      O que mudou 1.1 Version- 1.2 Version?


      Bom foram feitas muitas modificações.


      Foi Adicionado System de não falar palavrão em que o char é multado por 1º min sem chat.


      (Créditos pelo Script Doidin)


      Foi Removido o System de Kick dos trainers.


      Nova Area de trainers ficou mais agradavel.


      Foi adicionado tubarões nos barcos de carlin.


      Foi removido o maior bug de mapa do servidor o de "calassa".


      Foi removido varios bug's de mapa.


      Foi adicionado uma mini ilha ao lado no Barco vip de carlin.


      Foi adicionado em carlin o NPC de teletransport VIP ao lado do barco de carlin.


      o NPC de teletransport VIP de thais continua no mesmo lugar até a proxima atualização.


      Foi modificadas as Potions estão healando balanceadamente.


      Itens VIP com os no de VIP mesmo exemplo: VIP Sword.


      Foi modificado o tanto que você ganha de exp de um player quando voce o killa para: 0.1 %


      Foi modificado a Config.lua em alguns lugares como mostra o Spoiler abaixo.



      Registre-se para ver spoiler(s).

    • Por Administrador
      Fala galerinha,
      Estava procurando esse script e achei metade aqui no fórum e a outra metade na Web.
      Aprenda abaixo a colocar um lottery system no seu OT.


      Lottery System WEB + LUA

      Dica: No Script .lua acima coloque "Yes" na variável Website.

      Rode esse código no mysql (Aba SQL se você usa phpmyadmin)

      CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `lottery`(`id`, `name`, `item`) VALUES (NULL , 'Nobody', 'nothing');

      Como adicionar o Script .Lua (GlobalEvent) no seu OT:
      http://www.xtibia.com/forum/topic/135003-lottery-system/

      Agora vamos ao Website:

      Crie o arquivo em suaPastaDoWebsite/lottery.php

      <?PHP $lottery = $SQL->query('SELECT id, name, item FROM lottery ORDER BY id DESC LIMIT 1;'); foreach($lottery as $result) { $main_content .= '<center><h1>Lottery</h1></center> <center>Every X hours we will choose one player who will win random item!<br/> Last Winner: <a href="?subtopic=characters&name='.urlencode($result['name']).'">'.$result['name'].'</a> Item: <i>'.$result['item'].'</i> Congratulations!</center>'; } ?>

      Abra suaPastaDoWebsite/layouts/tibiacom/layout.php e adicione:

      case "lottery"; $topic = "Lottery System"; $subtopic = "lottery"; include("lottery.php"); break;


      Créditos: BlackTibia
    • Por Omega
      Informações:
      Tasks adquiridas ou canceladas em NPC As tasks podem ser feitas repetidas vezes, mas somente uma vez por dia e apenas uma de cada vez (tempo configurável) Comando para acompanhar o andamento da task Atualização (31/08/13) > agora é possível ganhar itens a cada vez que a task é terminada Atualização (05/09/13) > VÁRIOS bugs corrigidos e algumas novas opções adicionadas Agora você pode escolher se quer que as tasks sejam feitas por level ou na ordem Recomendo a todos os que baixaram alguma versão anterior que atualizem  
      Códigos:
       
      Tags:
      Em creaturescripts.xml, adicione:
      <event type="kill" name="Tasks" script="taskkill.lua"/> Em talkactions.xml, adicione:
      <talkaction words="!countkills" event="script" value="countkills.lua"/> No arquivo creaturescripts/scripts/login.lua, adicione:
      registerCreatureEvent(cid, "Tasks") Scripts:
      Crie um arquivo tasklib.lua em lib
      Registre-se para ver spoiler(s).

      O que aconteceu:
       - Antes até o lvl 20 o jogador recebia a task dos rotworms, até o lvl 50, a task dos cyclops e daí pra frente, task dos dragons.
       - As tasks iniciais são as mesmas, mas até o lvl 80 é a task dos dragons e daí pra frente, o jogador receberá a task das hydras e serpent spawns.
       
      Considerações finais:
       
      O sistema de pontos apenas adiciona e checa a quantidade de pontos: você deve escolher se quer adicionar alguma coisa a partir deles.
      Testei profundamente e corrigi todos os erros que encontrei, postem se encontrarem mais algum, enviem o log do erro que farei o possível para consertar.