Ir para conteúdo

Peedbew

Campones
  • Total de itens

    39
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Tudo que Peedbew postou

  1. Peedbew

    Mapa World of Piece

    não conhecia esse mapa vou baixar e conferir, parece ser dhr
  2. vc quer as palavras nesse estilo ouu um botão com fundo + o texto? n deu pra entender
  3. É uma cenoura, um boomerang ou um telefone? sauhiua to brincando, mas é o que parece, talvez pq a cor e o formato estão estranhos para ser uma sword
  4. n sou especialista em spriting art, mas sei que não consigo fazer essas bases que você fez. Acho que vc deveria investir em spriting 45º, vai se dar bem vou gostar de acompanhar os trabalhos
  5. Gaguejou um pouco no vídeo kkkk mas deu pra entender parabéns pelo conteúdo mlk, da pra editar o design desse launcher pra ficar mais fodão, curti mt
  6. Achei muito legal vc ter contribuído com o server do seu projeto, em outra versão. Muito mesmo. Reputado!
  7. n conhecia a ilha dos piratas, deve ser recente. Achei bem criativo mesmo
  8. Eita, Otpanel é a única empresa que colabora com desenvolvimento de ots, não? Fiquei abismado, no bom sentido. Acho incrível a comunidade ter essa parceira forte. Parabéns! Sobre o Servidor: Super apoio, gostei do servidor em geral. Parabéns pela organização do tópico também, hehe
  9. Wow, parece que fica bem mais fácil procurar nesses tópicos assim tenho 2 dessas versões, parabéns pela organização
  10. Tá bem agradável, jogaria nele haha
  11. Oi. Vim trazer esse sistema postado por nosso amigo zbizu da comunidade otland. Se não sabe como funciona, veja o exemplo abaixo. Espero que seja útil! 07:39 You see a mastermind shield (Def:37). It weighs 57.00 oz. [shield.+5%] [mp.+10%] [melee.+2%] 07:40 You see a crossbow (Range:5). It weighs 40.00 oz. [shield.+2%] [mp.+14%] [hp.+4%] SLOT SYSTEM global.lua function getItemAttack(uid) return ItemType(getThing(uid).itemid):getAttack() end function getItemDefense(uid) return ItemType(getThing(uid).itemid):getDefense() end function getItemArmor(uid) return ItemType(getThing(uid).itemid):getArmor() end function getItemWeaponType(uid) return ItemType(getThing(uid).itemid):getWeaponType() end function isArmor(uid) if (getItemArmor(uid) ~= 0 and getItemWeaponType(uid) == 0) then return true else return false end end function isWeapon(uid) return (getItemWeaponType(uid) > 0 and getItemWeaponType(uid) ~= 4) end function isShield(uid) return getItemWeaponType(uid) == 4 end function isBow(uid) return (getItemWeaponType(uid) == 5 and (not ItemType(getThing(uid).itemid):isStackable())) end actions.xml <action itemid="8300" script="slot.lua"/> slot.lua action local conf = {maxSlotCount=3,ignoredIds={}}function choose(...) local arg = {...} return arg[math.random(1,#arg)]endfunction onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or isItemStackable(itemEx.uid) or itemEx.itemid == 0 or itemEx.type > 1 or not(isArmor(itemEx.uid) or isWeapon(itemEx.uid) or isShield(itemEx.uid)) then return false end if isCreature(itemEx.uid) then return false end local nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) function getper() local n = 1 for i=1,10 do n = n+math.random(0,10) if n < 8*i then break end end return n end function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c+1 end return c end if getSlotCount(nam) < conf.maxSlotCount then local l = choose('hp','mp','ml','melee','shield','dist') local p = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..l..'.+'..p..'%]' doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,l..'.+'..p..'%') doSetItemSpecialDescription(itemEx.uid, nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Slot limit reached.") end return trueend creaturescripts.xml <event type="login" name="SlotLogin" script="slot.lua"/> slot.lua creaturescripts local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}for i=1,300 do conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50) setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i) conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51) setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i) conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52) setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 100+i) conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53) setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i) conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54) setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i) conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55) setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)endfunction getSlotType(n) if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n:match('(.-)%.([+-])(%d+)%%') end else return false endendlocal function loadSet(cid)local player = Player(cid)if not player then return false end local t = {} for slot=1,9 do t[slot] = '' local s = getPlayerSlotItem(player,slot).uid if s ~= 0 then t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) end end return tendfunction chk(cid,f) if not Player(cid) then return false end local t = loadSet(cid) if not t then return false end for i=1,#f do if f[i] ~= t[i] then equip(player,nil,slot) break end end addEvent(chk,2000,cid,t)endfunction check_slot(aab, i) if i == 5 or i == 6 then if isWeapon(aab) or isShield(aab) or isBow(aab) then return true end else return true endreturn falseendfunction equip(player,item,slot) local t = {} if item then local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) t[mm] = tonumber(qto) end for i=1,9 do if i ~= slot then if getPlayerSlotItem(player,i).itemid ~= 0 then local aab = getPlayerSlotItem(player,i).uid if aab and check_slot(aab,i) then for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do local mm,sinal,qto2 = getSlotType(_) if mm then if not t[mm] then t[mm] = 0 end t[mm] = t[mm]+tonumber(qto2) t[mm] = t[mm] > 300 and 300 or t[mm] end end end end end end local fu = 0 local ca = {} local s = '' for sl,n in pairs(t) do fu = fu+1 s = s..''..n..'% more of '..sl..'\n' if sl == 'hp' then player:addCondition(conditionHP[tonumber(n)]) ca[50] = 1 doSendTutorial(player,19) elseif sl == 'mp' then player:addCondition(conditionMP[tonumber(n)]) ca[51] = 1 doSendTutorial(player,19) elseif sl == 'ml' then player:addCondition(conditionML[tonumber(n)]) ca[52] = 1 elseif sl == 'melee' then player:addCondition(conditionCLUB[tonumber(n)]) ca[53] = 1 elseif sl == 'shield' then player:addCondition(conditionSHI[tonumber(n)]) ca[54] = 1 elseif sl == 'dist' then player:addCondition(conditionDIST[tonumber(n)]) ca[55] = 1 end end if fu > 0 then for i=50,55 do if not ca[i] then doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i) end end else for i=50,55 do doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i) end end return trueendfunction onLogin(player) equip(player,nil,slot)local cid = player:getId() addEvent(chk,2000,cid,loadSet(cid)) return trueend SLOT REMOVER actions.xml <action itemid="8299" script="slotremove.lua"/> slotremove.lua function getSlotType_full(n) if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n end else return false endendfunction onUse(cid, item, fromPosition, itemEx, toPosition)item_slots_a = 0item_slots_n = ""item_slots_t = {} for _ in Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do item_slots_a = item_slots_a + 1 item_slots_t[item_slots_a] = getSlotType_full(_) end if item_slots_t[1] == nil then return false end for i = 1, #item_slots_t - 1 do item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]" end doRemoveItem(item.uid,1) doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED) doSetItemSpecialDescription(itemEx.uid, item_slots_n) doPlayerSendTextMessage(cid,20,"Attribute removed.")return trueend
  12. Não sou mapper pra dizer, mas não despreze suas habilidades. Melhore-as. Acompanhando os trabalhos, abraçous.!
  13. Muito bom o projeto, diferente da maioria com certeza. Seguindo ~
  14. Peedbew

    Carding

    As vezes prefiro inovar no tradicional, hoje em dia no Brasil sua desconfiança tem que ser dobrada.
  15. Valeu pelo tutorial, penso em usar
  16. Votei em ATS (rpg), pode sair conteúdos muito mais originais.
  17. Galeria top @Skulls, seus códigos são bons demais. Seguindo.
  18. Muito boa a técnica. Na minha opinião o efeito ficaria mais legal puxando pra um laranja.
  19. Olá Xtibianos! Vim trazer este script bem criativo. Ele permite você mudar o elemento da wand/rod que escolher. Siga as instruções para que funcione corretamente. Créditos: StrutZ (Otland) Jano (Otland) Non Sequitur (Otland) EXPLICAÇÃO http://imgur.com/kvBzDh5 REQUISITOS INFORMAÇÕES -- Config-- Set wand how the wand deals damageDamageTypeWand = { values = false, -- If this is set to true then it will use the min and max values. If set to false the wand will use the formula -- Damage Values min/max wandMinDam = 20, wandMaxDam = 50, -- Damage Formula formula = { wandMinDam = function(level, maglevel) return -((level / 5) + (maglevel * 1.4) + 8) end, wandMaxDam = function(level, maglevel) return -((level / 5) + (maglevel * 2.2) + 14) end, }}-- Modal window config and storage idlocal config = { storage = 10009, titleMsg = "Change Weapon Damage Type", mainMsg = "Choose a damage type from the list",-- End Config -- Damage Table [1] = {element = "Holy"}, [2] = {element = "Fire"}, [3] = {element = "Death"}, [4] = {element = "Poison"}, [5] = {element = "Energy"}, [6] = {element = "Earth"}, [7] = {element = "Ice"},} INSTALAÇÃO Instale o Modal Window Helper, citado acima Registre o script /data/actions/actions.xml adicionando esta linha (Substituindo "ITEMID" com o item que você quiser usar: <action itemid="ITEMID" script="weapon_damage"/> <action actionid="ACTIONID" script="weapon_damage"/> Crie um novo documento de texto em /data/actions/scripts e nomeie para "weapon_damage.lua" e cole o seguinte: -- Config -- Set wand how the wand deals damageDamageTypeWand = { values = false, -- If this is set to true then it will use the min and max values. If set to false the wand will use the formula -- Damage Values min/max wandMinDam = 20, wandMaxDam = 50, -- Damage Formula formula = { wandMinDam = function(level, maglevel) return -((level / 5) + (maglevel * 1.4) + 8) end, wandMaxDam = function(level, maglevel) return -((level / 5) + (maglevel * 2.2) + 14) end, }} -- Modal window config and storage idlocal config = { storage = 10009, titleMsg = "Change Weapon Damage Type", mainMsg = "Choose a damage type from the list",-- End Config -- Damage Table [1] = {element = "Holy"}, [2] = {element = "Fire"}, [3] = {element = "Death"}, [4] = {element = "Poison"}, [5] = {element = "Energy"}, [6] = {element = "Earth"}, [7] = {element = "Ice"},} function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) player:sendDamageWindow(config) return trueend Adicione esta linha no seu global.lua: dofile('data/lib/weapon_damage.lua') Crie um novo documento de texto em /data/lib/ e renomeie para "weapon_damage.lua" e cole isto: function Player:sendDamageWindow(config) local function buttonCallback(button, choice) -- Modal window functionallity if button.text == "Confirm" then self:setStorageValue(10009, choice.id) end end -- Modal window design local window = ModalWindow { title = config.titleMsg, -- Title of the modal window message = config.mainMsg, -- The message to be displayed on the modal window } -- Add buttons to the window (Note: if you change the names of these you must change the functions in the modal window functionallity!) window:addButton("Confirm", buttonCallback) window:addButton("Cancel") -- Set what button is pressed when the player presses enter or escape window:setDefaultEnterButton("Confirm") window:setDefaultEscapeButton("Cancel") -- Add choices from the action script for i = 1, #config do local o = config[i].element window:addChoice(o) end -- Send the window to player window:sendToPlayer(self)end Registre o item em /data/weapons/weapons.xml Adicionando essa linha: Essa linha é para se você estiver usando wand <wand id="ITEM ID HERE" level="300" mana="20" script="weapon_damage.lua"><!-- Shadow's Sceptre --> <vocation name="Sorcerer" /> </wand> Crie um novo documento de texto em /data/weapons/scripts e nomeie para "weapon_damage.lua" e cole: local DamageTypes = { [1] = {DamageType = COMBAT_HOLYDAMAGE, DamageEffect = CONST_ANI_HOLY}, [2] = {DamageType = COMBAT_FIREDAMAGE, DamageEffect = CONST_ANI_FIRE}, [3] = {DamageType = COMBAT_DEATHDAMAGE, DamageEffect = CONST_ANI_DEATH}, [4] = {DamageType = COMBAT_POISONDAMAGE, DamageEffect = CONST_ANI_POISON}, [5] = {DamageType = COMBAT_ENERGYDAMAGE, DamageEffect = CONST_ANI_ENERGY}, [6] = {DamageType = COMBAT_EARTHDAMAGE, DamageEffect = CONST_ANI_EARTH}, [7] = {DamageType = COMBAT_ICEDAMAGE, DamageEffect = CONST_ANI_ICE}} function onGetFormulaValues(player, level, maglevel) if DamageTypeWand.values == true then min = -(DamageTypeWand.wandMinDam) max = -(DamageTypeWand.wandMaxDam) else min = DamageTypeWand.formula.wandMinDam(level, maglevel) max = DamageTypeWand.formula.wandMaxDam(level, maglevel) end return min, maxend local combat = {}for k, dam_Table in pairs(DamageTypes) do combat[k] = Combat() combat[k]:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) combat[k]:setParameter(COMBAT_PARAM_BLOCKSHIELD, 1) combat[k]:setParameter(COMBAT_PARAM_TYPE, dam_Table.DamageType) combat[k]:setParameter(COMBAT_PARAM_DISTANCEEFFECT, dam_Table.DamageEffect) -- _G Is used to manually define 'onGetFormulaValues' in this loop in doesnt seem to be able to find the function. _G['onGetFormulaValues' .. k] = onGetFormulaValues combat[k]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues" .. k)end function onUseWeapon(player, var) local value = player:getStorageValue(10009) local combatUse = combat[value] if not combatUse then return true end return combatUse:execute(player, var)end
  20. Olá. Esse conteúdo foi desenvolvido pelo membro Non Sequitur, da Otland. Decidi trazer a vocês, então vamos lá. MODAL WINDOW A forma atual que podemos implementar Modal Windows é bastante complicada, de acordo com Non Sequitur. Ter de criá-la em algum lugar, registrar um evento, adicionar botões de alguma forma estranha para fazer funcionar, sem falar que tem que ter em conta ids de janelas, botões, ids de escolha em algum arquivo diferente, etc... O que você pode fazer com isto? -- The helper lib is used by passing a table value to the ModalWindow functionlocal window = ModalWindow { title = 'Title', message = 'Please, choose the lowest number and press [Ok]'}local lowestChoicefor i = 1, 5 do local value = math.random(1, 100) -- modalWindow:addChoice() returns the choice object that will be passed to the callbacks local choice = window:addChoice(value) -- This way we can pass extra information to the callback choice.value = value if not lowestChoice or lowestChoice.value > value then lowestChoice = choice endendlowestChoice.correct = true-- Add a button with a specific callbackwindow:addButton('Ok', function(button, choice) if choice.correct then print('Player selected the correct option.') else print('Player selected the incorrect option.') end end)-- Set this button as the default enter buttonwindow:setDefaultEnterButton('Ok')-- Add a button without a specific callbackwindow:addButton('Close')window:setDefaultEscapeButton('Close')-- If a button without a specific callback is pressed, this fucntion will be calledwindow:setDefaultCallback( function(button, choice) print('Default callback, button pressed: ' .. button.text .. ' player choice: ' .. choice.text) end)window:sendToPlayer(player) Você pode usar este exemplo em uma talkaction e testar por si mesmo. Diferente do que é mostrado no código acima, você também pode usar modalWindow: addbuttons (...) e modalWindow: addChoices (...) para adicionar vários botões / opções ao mesmo tempo. INSTALANDO Em data/lib/lib.lua dofile('data/lib/modalwindow.lua') Crie o arquivo data/lib/modalwindow.lua if not modalWindows then modalWindows = { modalWindowConstructor = ModalWindow, nextFreeId = 500, windows = {} }end local MT = {}MT.__index = MT function ModalWindow(...) local args = {...} if type(args[1]) == 'table' then local self = setmetatable(args[1], MT) local id = modalWindows.nextFreeId self.id = id self.buttons = {} self.choices = {} self.players = {} self.created = false modalWindows.nextFreeId = id + 1 table.insert(modalWindows.windows, self) return self end return modalWindows.modalWindowConstructor(...)end function MT:setDefaultCallback(callback) self.defaultCallback = callbackend function MT:addButton(text, callback) local button = {text = tostring(text), callback = callback} table.insert(self.buttons, button) return buttonend function MT:addButtons(...) for _, text in ipairs({...}) do table.insert(self.buttons, {text = tostring(text)}) endend function MT:addChoice(text) local choice = {text = tostring(text)} table.insert(self.choices, choice) return choiceend function MT:addChoices(...) for _, text in ipairs({...}) do table.insert(self.choices, {text = tostring(text)}) endend function MT:setDefaultEnterButton(text) self.defaultEnterButton = textend function MT:setDefaultEscapeButton(text) self.defaultEscapeButton = textend function MT:setTitle(title) self.title = tostring(title)end function MT:setMessage(message) self.message = tostring(message)end local buttonOrder = { [4] = {3, 4, 2, 1}, [3] = {2, 3, 1}, [2] = {1, 2}, [1] = {1}}function MT:create() local modalWindow = modalWindows.modalWindowConstructor(self.id, self.title, self.message) local order = buttonOrder[math.min(#self.buttons, 4)] if order then for _, i in ipairs(order) do local button = self.buttons[i] modalWindow:addButton(i, button.text) button.id = i if button.text == self.defaultEnterButton then modalWindow:setDefaultEnterButton(i) elseif button.text == self.defaultEscapeButton then modalWindow:setDefaultEscapeButton(i) end end end for _, choice in ipairs(self.choices) do modalWindow:addChoice(_, choice.text) choice.id = _ end self.modalWindow = modalWindowend function MT:sendToPlayer(player) if not self.modalWindow then self:create() end player:registerEvent('ModalWindowHelper') self.players[player:getId()] = true return self.modalWindow:sendToPlayer(player)end Em data/creaturescripts/creaturescripts.xml <event type="modalwindow" name="ModalWindowHelper" script="modalwindowhelper.lua" /> Crie o arquivo data/creaturescripts/scripts/modalwindowhelper.lua function onModalWindow(player, modalWindowId, buttonId, choiceId) local modalWindow for _, window in ipairs(modalWindows.windows) do if window.id == modalWindowId then modalWindow = window break end end if not modalWindow then return true end local playerId = player:getId() if not modalWindow.players[playerId] then return true end modalWindow.players[playerId] = nil local choice = modalWindow.choices[choiceId] for _, button in ipairs(modalWindow.buttons) do if button.id == buttonId then local callback = button.callback or modalWindow.defaultCallback if callback then callback(button, choice) break end end end return trueend
  21. Conheço a empresa de nome. Aparenta ter qualidade. Se alguém puder publicar algum material mostrando como funciona otpanel eu agradeço. ^^
  22. Parabéns ao membro e aos administradores por valorizarem tanto.
  23. Olá, vim trazer à comunidade esse código. Ele permite adicionar tempo para resetar a dh quest. Ele foi postado originalmente pelo membro Lundrial, da otland. Bem, não há mais o que dizer. DH LEVER TIME lever.lua local timetoreset = 5 -- Time to reset the quest in minutes.local objectid = xxxx -- Id of the item Blocking the pathlocal p = { Position(x, y, z), -- Position of the item blocking the path Position(x, y, z), -- Teleport Creation position Position(x, y, z) -- Position where it sends you}function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey) local stone = Tile(p[1]) local tp = Tile(p[2]) if item.itemid == 1945 then cid:sendTextMessage(MESSAGE_EVENT_ORANGE, 'The object in your path has been removed for ' .. timetoreset .. ' minutes.') doCreateTeleport(1387, p[3], p[2]) stone:getItemById(objectid):remove() p[1]:sendMagicEffect(CONST_ME_POFF) p[2]:sendMagicEffect(CONST_ME_TELEPORT) Item(item.uid):transform(1946) addEvent(function(stonePos) Game.createItem(objectid, 1, stonePos) stonePos:sendMagicEffect(CONST_ME_TELEPORT) p[2]:sendMagicEffect(CONST_ME_POFF) tp:getItemById(1387):remove() Tile(toPosition):getItemById(1946):transform(1945) end, timetoreset * 60000, stone:getPosition()) elseif item.itemid == 1946 then return false end return trueend
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...