Tutorial De Action

Fagunz
Por Fagunz
em Tutoriais de Scripting
  • 1
  • 2

Fagunz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 28/12/06Posts: 74

Tutorial de Actions

 

 

Em primero lugar vamos criar um Script Passo a Passo para acustumar.

 

Crie um arquivo.lua na sua pasta de scripts chamado mineaction e siga os passos abaixo - >

 

Bom , Aconselho sempre começar sua action com:

 

Código:

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

Depois com os famosos "Ifs" função "Se"

 

Código:

if item.uid == 3000 then

Aqui no caso acontecerá alguma coisa se o item que tem a UniqueId 3000 for usado !

 

(UniqueIds são IDs unicas , que são se pode ter 1 no mapa e podem ser facilmente colocadas com qualquer map editor [botão Direito , Properties , e teremos actionID e

UniqueID])

 

Bom apos o if item.uid == 3000 then Temos que colocar as funções desejadas.

 

No caso temos as funções :

Código:

 

* doChangeTypeItem

* doCreateItem

* doDecayItem

* doPlayerAddHealth

* doPlayerAddItem

* doPlayerAddMana

* doPlayerAddSkillTry

* doPlayerFeed

* doPlayerRemoveItem

* doPlayerRemoveMoney

* doPlayerSay

* doPlayerSendCancel

* doPlayerSendTextMessage

* doPlayerSetMasterPos

* doPlayerSetVocation

* doRemoveItem

* doSendMagicEffect

* doSetItemActionId

* doSetItemSpecialDescription

* doSetItemText

* doShowTextWindow

* doSendAnimatedText

* doSummonCreature

* doTeleportThing

* doTransformItem

* getItemRWInfo

* getPlayerAccess

* getPlayerFood

* getPlayerGuildId

* getPlayerHealth

* getPlayerLevel

* getPlayerMagLevel

* getPlayerMana

* getPlayerMasterPos

* getPlayerName

* getPlayerPosition

* getPlayerSkill

* getPlayerStorageValue

* getPlayerVocation

* getThingfromPos

* getTilePzInfo

* setPlayerStorageValue

 

Não falaremos de Todas mas é bom conhece-las ..

 

Então pule uma linha para colocarmos as funções

 

[No Primeiro exemplo aqui colocarei uma action de Sumonar um determinado Montro.]

 

Bom adicione

Código:

doSummonCreature("Demon",topos)

Isso fará que quando eu usar o Item que tem a UID 3000 seja sumonado um monstro na frente do player

 

 

Adicione uma linha abaixo de doSummon o efeito magico :

 

Código:

doSendMagicEffect(topos,14)

Pronto quando o Demon for sumonado agora haverá um efeito magico.

 

agora adicione isto no final

Código:

else

doPlayerSendCancel(cid,"Sorry, not possible.")

end

return 1

end

Sua action terminada deve estar assim :

Código:

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

Â*Â*if item.uid == 3002 then

 

doSummonCreature("Demon",topos)

doSendMagicEffect(topos,14)

 

else

doPlayerSendCancel(cid,"Sorry, not possible.")

end

return 1

end

No caso Else significa Mais e Else IF que tambem é muito usado ( não agora ) mais se end é o chamado fim que é usado no fim dos scripts sempre que finaliza alguma coisa.

 

Agora vamos abrir o map editor criar uma statua e adicionar a UniqueID 3000 e abrir tambem a action.xml e adicionar :

<action uniqueid="3000" script="mineaction.lua" />

 

Se tudo deu certo é porque você esta seguindo nosso tuto normalmente!

 

Agora encinarei um pouco outros comandos para então voltar a pratica !

 

Os mais famosos e usados são :

 

Código:

doPlayerAddMana(cid,100) Neste caso adiciona 100 de mana ao player que usar o item que esta destacado na action !

 

doPlayerAddHealth(cid,100) Mesmo que o acima mas neste caso adiciona life !

 

doPlayerFeed(cid,120) Adiciona Digamos.. food ao player neste caso o player subirá life e mana por 120 seconds.

 

doPlayerSay(cid,"Hicks",2) Faz o player a dizer uma mensagem usado em cachaça e em mana fluid.

 

doPlayerAddItem(cid,2400,1) É usado em quests no caso adiciona um item do id 2400 que eh uma Magic Sword.

 

doPlayerRemoveMoney(cid,100) Tira dinheiro do player , no caso ali 100 gps.

 

doPlayerSendTextMessage(cid,2,"Tutorial") Aparece uma mensagem no screnn(tela) do player, no caso ali Tutorial.

 

doSendMagicEffect(topos,2) Ele é u famoso efeito magico ^^

 

doSummonCreature("Dragon",topos) Ali sumona um demon na posição do item usado ! Ele pode ser usado pra sumonar em determinada coordenada exemplo :

 

doSummonCreature("Dragon", {x=138, y=281, z=8})

 

Bom acho que falei o suficiente por hoje

 

Use sua criatividade em uma suas actions !

 

Continuando ...

 

Especial Alavancas de Mil maneiras

 

1 - Removendo pedras -

 

Vejam o Ex(By Peonso) :

Código:

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

gatepos = {x=181, y=135, z=11, stackpos=1}

getgate = getThingfromPos(gatepos)

 

if item.uid == 3002 and item.itemid == 2711 and getgate.itemid == 1822 then

doRemoveItem(getgate.uid,1)

doTransformItem(item.uid,item.itemid+1)

elseif item.uid == 3002 and item.itemid == 2712 and getgate.itemid == 0 then

doCreateItem(1822,1,gatepos)

doTransformItem(item.uid,item.itemid-1)

else

doPlayerSendCancel(cid,"Sorry, not possible.")

end

return 1

end

Neste caso vamos esclarecer tudo

 

3002 o UID da alavanca (não precisa ser necessariamente alavanca mas este exemplo é alavanca)

 

GatePos , é a posição da pedra , parede , estatua ou outra coisa que esteja bloqueando o caminho

 

1822 É o ID da pedra , parede ...

 

2711 o ID da alavanca

 

Bom ?!? Sim Otimo

 

Mas podemos editar este exemplo para fazer varias coisas ex: Acordar monstros que estavam transformados em Pedra ...

 

Muita gente deve estar pensando" hã?!? oq isso tem haver?"

 

Olhem só se adicionarmos

 

Código:

doSummonCreature("Gargoyle", {x=181, y=135, z=11})

doSendMagicEffect(topos,14)

 

Abaixo do doremoveitem teremos isso basta apenas trocar o ID da pedra para 2015 que é o id da estatua

 

Viram é só usar a criatividade de vocês

 

- Alavancas Sumonando Monstros e colocando Hole No Lugar de uma quest

 

Vamos ver mais uma vez o exemplo do peonso :

 

Código:

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

gatepos = {x=181, y=135, z=11, stackpos=1}

getgate = getThingfromPos(gatepos)

 

if item.uid == 3002 and item.itemid == 2711 and getgate.itemid == 1822 then

doRemoveItem(getgate.uid,1)

doTransformItem(item.uid,item.itemid+1)

elseif item.uid == 3002 and item.itemid == 2712 and getgate.itemid == 0 then

doCreateItem(1822,1,gatepos)

doTransformItem(item.uid,item.itemid-1)

else

doPlayerSendCancel(cid,"Sorry, not possible.")

end

return 1

end

Vamos Pensar o que podemos fazer ...

 

Que tal se nós adicionarmos após o doRemoveItem isso :

 

Código:

doSummonCreature("Dragon", {x=190, y=135, z=11})

doSummonCreature("Dragon", {x=187, y=139, z=11})

doSummonCreature("Dragon", {x=184, y=133, z=11})

doCreateItem(409,1,gatepos)

Neste caso , vai sumonar 3 Dragons e aparecer um Hole é com para ser usado em Quests [409 é o id da hole]

 

Viram como é facil? É só usar a criatividade !

 

Bom agora acho que vocêss entenderam como usar as alavancas ...

 

Vamos Falar de Runas e MFs

 

Este exemplo do Joao será nossa Base:

 

 

Código:

-- New MF rune by Joao Paulo 3.0 version --

 

 

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

 

playerpos = {x=topos.x, y=topos.y, z=topos.z, stackpos=253}Â*Â*Â*Â*

player = getThingfromPos(playerpos)

 

 

ml = getPlayerMagLevel(cid)

lvl = getPlayerLevel(cid)

formula = math.random(((lvl+ml)*2)-(lvl-ml))

 

if item2.itemid == 1 and ml >= 2 then

 

 

 

doSendMagicEffect(playerpos,1)

doPlayerAddMana(player.uid,formula)

doPlayerSay(player.uid,"Ahhhhhh",2)

 

 

if item.type > 1 then

doChangeTypeItem(item.uid,item.type-1)

else

doRemoveItem(item.uid,1)

end

 

end

 

if item2.itemid == 1 and ml <= 1 then

doSendMagicEffect(frompos,2)

doPlayerSendCancel(cid,"You dont Have Magic Level to use this rune.")

 

end

if item2.itemid >= 2 then

doPlayerSendCancel(cid,"You can only use this rune in you or in players.")

doSendMagicEffect(frompos,2)

end

 

 

return 1

end

Ai logo você ve que não é tão dificil assim ...

 

Se vocês testarem essa versão que upa MTTTTT mana de Mages

 

Oque podemos fazer bom eu não gosto de formulas retire a formula e o getplayerlvl

 

E coloque Código:

doPlayerAddMana(cid,100)

no lugar do antigo doPlayerAddMana

 

Com isso você pode reparar que toda hora vai upar 100 de mana..

 

Agora vamos fazer uma runa baseada na do Joao passo a passo :

 

Essa primera runa será pelas actions depois vou encinar uma pela pasta spells.

 

Bom vamos começar igual o exemplo dele:

 

Código:

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

 

playerpos = {x=topos.x, y=topos.y, z=topos.z, stackpos=253}

player = getThingfromPos(playerpos)

Isso mostra as funções a serem usadas e a posição do Player

 

Vamos pular uma linha e colocar :

 

Código:

ml = getPlayerMagLevel(cid)

 

if item2.itemid == 1 and ml >= 2 then

Bom isso pega o ML da pessoa para saber se ela tem o Magic necessario para usar.

 

Código:

doPlayerAddHealth(player.uid,100)

doSendMagicEffect(playerpos,1)

doPlayerAddMana(player.uid,100)

doPlayerSay(player.uid,"This Potion Are Mud",2)

 

Bom com isso adicionará 100 de life e 100 de mana ao player e força ele a dizer This Potion Are Mud

 

Código:

if item.type > 1 then

doChangeTypeItem(item.uid,item.type-1)

else

doRemoveItem(item.uid,1)

end

end

Isso remove 1 carga

 

if item2.itemid == 1 and ml <= 1 then

doSendMagicEffect(frompos,2)

doPlayerSendCancel(cid,"You dont Have Magic Level to use this rune.")

 

Isso mostra qual ML necessario para usar a LMF (Life mana fluid)

 

Código:

end

if item2.itemid >= 2 then

doPlayerSendCancel(cid,"You can only use this rune in you or in players.")

doSendMagicEffect(frompos,2)

end

 

 

return 1

end

Finalizando oque acontece quando erra o player e o end.

 

Viram ? Se quiserem fazer runas de adicionar equipes ou senão de teleport como nesse exemplo :

 

Código:

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

if item2.itemid == 0 then

doPlayerSendCancel(cid,"Sorry, not possible.")

else

if getPlayerAccess(cid) == 3 then

playerpos = getPlayerPosition(cid)

doTeleportThing(cid,topos)

doSendMagicEffect(playerpos,2)

doSendMagicEffect(topos,10)

else

doPlayerSendCancel(cid,"You are not allowed to use this rune.")

end

end

return 1

end

 

Ou senão o item :

Código:

 

doPlayerAddItem(cid,2400,1)

 

É muito facil, apenas adicionar as funções

 

-

 

Agora vou falar sobre quests

 

Bom se você usa YourOts é muito facil

 

Código:

-- Tutorial quest

if item.uid == (uniqueid que você quer) then

queststatus = getPlayerStorageValue(cid,[aconselho colocar a uniqueid])

if queststatus == -1 then

if getPlayerLevel(cid) >= (level necessario) then

doPlayerSendTextMessage(cid,22,"You have found Tutorial Rox Item.")

doPlayerAddItem(cid,(Id Do Item),[Quantidade])

setPlayerStorageValue(cid,(uid),1)

else

doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.")

end

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

Adicione isso na chest.lua

 

Bom agora edite conforma esta acima só que sem os {} [] ()

 

Se você não usa YourOts -

 

Baixe YourOts (Brincadera a parte)

Ignore o passo acima

 

Vamos ver um exemplo do Peonso

 

Código:

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

 

if item.uid == (UID) then

queststatus = getPlayerStorageValue(cid,[uID])

if queststatus == -1 or queststatus == 0 then

doPlayerSendTextMessage(cid,22,"You have found an Tutorial Rox.")

doSendMagicEffect(topos,12)

coins_uid = doPlayerAddItem(cid,[iD Do Item],{Quantidade})

setPlayerStorageValue(cid,[uID],1)

 

else

doPlayerSendTextMessage(cid,22,"This chest is empty.")

end

 

elseif item.uid == [uID] then

queststatus = getPlayerStorageValue(cid,[uID])

if queststatus == -1 or queststatus == 0 then

doPlayerSendTextMessage(cid,22,"You have found a Tutorial.")

doSendMagicEffect(topos,12)

coins_uid = doPlayerAddItem(cid,[iD do Item],{quantidade})

setPlayerStorageValue(cid,[uID],1)

 

else

doPlayerSendTextMessage(cid,22,"This chest is empty.")

end

else

return 0

end

return 1

end

É só substituir colocando os IDs sem os [] {} ()

 

Editando LvLDoors by Peonso

Bom antes de mais nada temos que adicionar isso no actions.xml

 

Código:

<action itemid="1627" script="lvldoor.lua"/>

<action itemid="1629" script="lvldoor.lua"/>

<action itemid="1645" script="lvldoor.lua"/>

<action itemid="1647" script="lvldoor.lua"/>

<action itemid="1659" script="lvldoor.lua"/>

<action itemid="1661" script="lvldoor.lua"/>

<action itemid="1668" script="lvldoor.lua"/>

<action itemid="1677" script="lvldoor.lua"/>

Essas são as portas mais usadas , quem usa outras pode adicionar facilmente assim:

 

Código:

<action itemid="ID Da Porta" script="lvldoor.lua"/>

Bom com sua porta add vamos ao script do peonso

 

Código:

-- By Peonso, based on Junk Food script

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

 

doorpos = {x=frompos.x, y=frompos.y, z=frompos.z}

playerpos = getPlayerPosition(cid)

playerlevel = getPlayerLevel(cid)

 

--shadowtemple

if item.itemid == 1629 and doorpos.x == 265 and doorpos.y == 118 and doorpos.z == 8 then

if playerlevel > 29 then

doTeleportThing(cid,doorpos)

elseif playerlevel < 30 then

doPlayerSendTextMessage(cid,22,"You need to be level 30 or higher.")

end

 

--DOMS

elseif item.itemid == 1627 and doorpos.x == 133 and doorpos.y == 250 and doorpos.z == 8 then

if playerlevel > 39 then

doTeleportThing(cid,doorpos)

elseif playerlevel < 40 then

doPlayerSendTextMessage(cid,22,"You need to be level 40 or higher.")

end

 

end

return 1

end

 

Explicando :

Ali temos 2 portas os ids são 1627 e 1629 a seguir dos IDS temos as coodernadas o lvl 39 then + que 39 ou seja apenas 40 pra cima doTeleportthing(cid,doorpos) isso é a posição da door ou seja vai teleporta o player para dentro da porta

Facil não? Edite sua porta você mesmo e mude o ID e as coordenadas -

 

Picks System ( Creditos de Thotth )

 

Código:

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

 

tilepos = {x=topos.x, y=topos.y, z=topos.z}

 

 

if item2.itemid == 0 then

return 0

end

 

 

if item2.itemid == 782 and tilepos.x == 56 and tilepos.y == 49 and tilepos.z == 8 then

player1pos = {x=56, y=50, z=8, stackpos=253}

player1 = getThingfromPos(player1pos)

 

if player1.itemid > 0 then

 

nplayer1pos = {x=56, y=49, z=9}

 

doSendMagicEffect(player1pos,2)

 

doTeleportThing(player1.uid,nplayer1pos)

 

doSendMagicEffect(nplayer1pos,10)

 

else

doSendMagicEffect(frompos,2)

doPlayerSendCancel(cid,"You are not in the right place!")

end

end

return 1

end

Explicando o código By Thotth:

 

Agora la em and tilepos.x == 56 and tilepos.y == 49 and tilepos.z == 8 Ai eh as cordenadas do xaozinhu q vc irá usar a pick para ser teleportado.

 

Tamo quase la! Em if item2.itemid == 782 Este 782 eh o id da tile (o xaumzinhu) q vc colocou na coordenada q a pick devera ser usada.

 

Para dar um toke a+ eu puiz la em doPlayerSendCancel(cid,"You are not in the right place!") esta mensagem se a mula do cara usa a pick e naum estiver no lugar certo q vc colocou.

 

OBS: tilepos = {x=topos.x, y=topos.y, z=topos.z} n mexe ai pq se naum vai dar erro!

 

Agora entendendo e execuntando by Skoll

 

Isso é o pick system tem gente que não sabe nem oq é pick eh aquele intrumento que usamos para fazer buracos no chão , nesta aula que você teve retirada de um tuto do thotth com autorização dele é claro ele encinou como executar essa magnifica action , é a primeira vez que trabalhamos com o item2 em nossas aulas , o item2 é aquele segundo item do use with ( ex - eu dou use em uma rope e depois na tile de subir no caso a tile de subir é o item2) ele é utilizado em boa parte das actions ai você pergunta em não vi um "item1", ai que entra a code do actions.xml.

 

Código:

<action itemid="3394" script="pick.lua" />

Em actions gerais (eu gosto de chamar assim) você deve sempre colocar o id do item que da o use na actions.xml

 

 

Código:

 

Glossário

 

Item2 - Serve para itens tipo que você da use e tem que clicar em outro esse outro é o item2

 

Math Random - Define tudo aquilo que é aletorio ou não é pré definido.

 

If - Função 'Se' é usada em 90% das actions

 

Do - As Funções 'Do' representam sempre o fazer , Ex Sumonar , Transformar

 

And - É o famoso "E" usamos ele quando colocamos algo a +

 

Or - Função Ou , serve para as actions não ficarem muito extensas

 

UID - UniqueIds , elas só podem ser usadas em 1 item no jogo elas são unicas

 

Elseif - E se , Mas se , Determina um especie de condição se algo acontecer ela ativará a ação.

 

End - Finaliza as ações



user posted image

 

user posted image

 

user posted image

 

[imperator Blaze]

 

"Faça Acontecer que eu Faço Valer a Pena"

teres

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 31/10/06Posts: 77Char no Tibia: Elite Lord Paladin

Mt bom mesmo !!!!!

 

De 0 a 10 eu dou nota 9 ta tudo bem explicado mas nao é facil descifrar tudo ai vlwww

 

Teres

Melhor Naum..
Piorr Naum...
Diferente Naum..


Apenas eu e nada mas ..

Assinatura em construçao..









=D

Meu Time De Coraçao!





C vc gostou do meu Trabalho Vire meu Fan




Sou fan dessa galera aki.. o:



Frases Para Ela =* ( Naum seja curioso )

É mais fácil uma estrela cair do céu com o vento, do que você sair do meu pensamento.

Outra?


Você não morre quando deixa de viver, mas sim quando deixa de amar

=P

buster287

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 11/12/05Posts: 27

Ele ta muito bom e explicado.

 

Só falta colocar uma decoração sei la pra ficar melhor a visualização.

Depois disso vai fica bem melhor.

 

 

:hi:

Retired.

Jvchequer

"Veni, vidi, vici."
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 10/10/05Posts: 2161Char no Tibia: Master Chequer

Olá Xtibiano,

 

Parabéns, seu tutorial foi aprovado.

 

Estarei movendo ele para a área de tutoriais.

 

Obrigado por trazer conteúdo para o Xtibia.com e espero que continue com o ótimo trabalho.

 

 

Atenciosamente,

JV Chequer *Diretor Xtibia.com*

1271330714-U1306.gif

 

~ Fiz parte da Equipe Xtibia em um tempo que Tibia era minha família. Saudades de todos vocês.

Sky Knight

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 19/02/07Posts: 31

Mano Até Hoje Num vi nem um tutorial de como coloca tapestry (CORTINA)

Na Parede nem um ot dá mano nem o Zorzin

lol :(

Melhor Server:





Meus Fans:





TibiaBr:

thayam

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 02/11/05Posts: 179Char no Tibia: Dehby Dias, Hacked

Mtu bom Velhow

Teh mais

Continue assim

franline

Das Antiga
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/01/06Posts: 130Char no Tibia: Ascos Jone

Perfeito mano! Bem explicado,tudo certinho adorei!

vou tentar fazer umas agora :)

Omega

o/
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 17/06/07Posts: 1165Gênero: MasculinoChar no Tibia: Nenhum

ótimo tutorial, cara.

Muito bom mesmo.

Só não tive coragem de tentar ainda...

E como os outros disseram, pra ficar perfeito, poderia ter adicionado codes, ou letras de outras cores pra não embolar.

Shadow Knight

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/06/07Posts: 35

Gostei, e muito util para pessoas como eu q n entendem muito d actions, Aprovado.

picachu

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/02/07Posts: 598

Bom mesmo!!!

Quase ninguem sabe criar actions!!!!

Esse tutorial tá valendo..

Atenciosamente, Picachu... []s

vourath

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 10/10/05Posts: 236

Mto bom, eh verdade existem poucos acction maker

Com esse tutorial quem tiver interesse, recomendarei

 

>RECOMENDADO<

 

Cya

Atenciosamente,

Vourath!

vourxj7.png

Sou Seu amigo? Te ajudei? Gosta de mim?

Então use:

~~[vouverathbarfl9.jpg]~~

rubim

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/05/07Posts: 16

Po kra ate q kuase n da pre entender tenta fazr com 'Quotes' pra entender melhor =D

Vlw manow

 

---------------------------------------------

Ta meuh Doidão é? faz isso ai!

barbievettedoriftowf6gfrk6.gif

 

----------------------------------------------

Meu Fan? Usa Aiiiii!

banner_break_06_19_2007_11_41_00_30571.gif

 

----------------------------------------------

Me Procurando Em Ots?---My Char, Fan Tolbar---

cloundtolbaruj6.th.png

 

----------------------------------------------

Eu Sou:

 

Scripter

 

----------------------------------------------

CyA!

Voxnot

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 23/07/06Posts: 143Char no Tibia: Wizzard Marotow

Bem legal seu tutorial, pode ajuda muita gente.

 

 

 

----------------------------------------------------------

VoxTeam

Estamos Recrutando Membros

Mais Informações: Clique aqui

sath

rey do tiopss
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 19/12/06Posts: 345Char no Tibia: matels dregom uieuqui

Que isso cara! Não entendi nada... =D

Não sei mexer com essa área de actions, nunca entendo nada.

Mas pelo que diz o povão ai, seu tutorial deve tar muito perfeito.

Continue assim então e traga mais novidades ao XTibia Forum. Estaremos esperando! =D

 

Um abraço.

Olá XTibiano!
A sua assinatura estava danificando o layout do fórum e, foi movida para a área "Sobre Mim".

Grato pela atenção,
Henrique Moura.

  • 1
  • 2