Ir para conteúdo

Gengo

Cavaleiro
  • Total de itens

    177
  • Registro em

  • Última visita

  • Dias Ganhos

    50

Posts postados por Gengo

  1. Você precisa adaptar conforme suas necessidades, segue ai, se não funcionar, só lamento, como disse, vc precisa adaptar conforme suas tfs

    local keywordHandler = KeywordHandler:new()
    local npcHandler = NpcHandler:new(keywordHandler)
    NpcSystem.parseParameters(npcHandler)
    
    function onCreatureAppear(cid)              npcHandler:onCreatureAppear(cid)            end
    function onCreatureDisappear(cid)           npcHandler:onCreatureDisappear(cid)         end
    function onCreatureSay(cid, type, msg)      npcHandler:onCreatureSay(cid, type, msg)    end
    function onThink()                          npcHandler:onThink()                        end
    
    
    function greetCallback(player)
    	player:doSendDialogNpc(Npc():getId(),  "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa")
    	return true             
    end
    
    function creatureSayCallback(cid, type, msg)
    	if not npcHandler:isFocused(cid) then
    		return false
    	end
    
    end
    
    function onReleaseFocus(player)
      player:doSendDialogNpcClose()
    end
    
    npcHandler:setCallback(CALLBACK_GREET, greetCallback)
    npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus)
    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

     

  2. local OpcodeDialog = 80
    local Actions = {
      open = 1,
      closed = 2
    }
    
    function Player.doSendDialogNpc(self, npc, msg, opc)
      if ( not opc ) then
        opc = {}
      end
      self:sendExtendedOpcode(OpcodeDialog, table.serialize({ action = Actions.open, data = { npcId = npc, message = msg, options = opc } })) 
    end
    
    function Player.doSendDialogNpcClose(self)
      self:sendExtendedOpcode(OpcodeDialog, table.serialize({ action = Actions.closed }))
    end

     

  3. Em 01/09/2020 em 20:03, raulcdj disse:

    table.serialize = function(x, recur)
      local t = type(x)
      recur = recur or {}

      if t == nil then
        return "nil"
      elseif t == "string" then
        return string.format("%q", x)
      elseif t == "number" then
        return tostring(x)
      elseif t == "boolean" then
        return t and "true" or "false"
      elseif getmetatable(x) then
        error("Can not serialize a table that has a metatable associated with it.")
      elseif t == "table" then
        if(table.find(recur, x)) then
          error("Can not serialize recursive tables.")
        end
        table.insert(recur, x)

        local s = "{"
        for k, v in pairs(x) do
          s = s .. "[" .. table.serialize(k, recur) .. "]"
          s = s .. " = " .. table.serialize(v, recur) .. ","
        end
        s = s .. "}"
        return s
      else
        error("Can not serialize value of type '" .. t .. "'.")
      end
    end
    table.find = function (table, value)
      for i, v in pairs(table) do
        if(v == value) then
          return i
        end
      end
      return nil
    end

    nao tenho table.serialize tenho so o 012-table e o mesmo arquivo ou tenho que cria um table.serialize

    [01/09/2020 20:23:23] [Error - Npc interface] 
    [01/09/2020 20:23:23] data/npc/scripts/gengo.lua:onCreatureSay
    [01/09/2020 20:23:23] Description: 
    [01/09/2020 20:23:23] data/lib/npcdialog_lib.lua:11: attempt to call global 'doSendPlayerExtendedOpcode' (a nil value)
    [01/09/2020 20:23:23] stack traceback:
    [01/09/2020 20:23:23]     data/lib/npcdialog_lib.lua:11: in function 'doSendDialogNpc'
    [01/09/2020 20:23:23]     data/npc/scripts/gengo.lua:11: in function 'callback'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/npchandler.lua:339: in function 'greet'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/npchandler.lua:512: in function 'onGreet'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/modules.lua:222: in function 'callback'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
    [01/09/2020 20:23:23]     data/npc/lib/npcsystem/npchandler.lua:388: in function 'onCreatureSay'
    [01/09/2020 20:23:23]     data/npc/scripts/gengo.lua:8: in function <data/npc/scripts/gengo.lua:8>

    Certo, você nao tem, então siga o tutorial e adicione, e reveja com cuidado, verifique no seu servidor você não tem a função doSendPlayerExtendedOpcode, recomendo instalar, esse topico não ensino instalar opcodes.

  4. 45 minutos atrás, raulcdj disse:

    meu servidor e pda e da esse erro quando digo hi 

     

    [01/09/2020 18:42:24] [Error - Npc interface] 
    [01/09/2020 18:42:24] data/npc/scripts/gengo.lua:onCreatureSay
    [01/09/2020 18:42:24] Description: 
    [01/09/2020 18:42:24] data/lib/012-table.lua:16: attempt to call field 'find' (a nil value)
    [01/09/2020 18:42:24] stack traceback:
    [01/09/2020 18:42:24]     data/lib/012-table.lua:16: in function 'serialize'
    [01/09/2020 18:42:24]     data/lib/npcdialog_lib.lua:11: in function 'doSendDialogNpc'
    [01/09/2020 18:42:24]     data/npc/scripts/gengo.lua:11: in function 'callback'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/npchandler.lua:339: in function 'greet'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/npchandler.lua:512: in function 'onGreet'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/modules.lua:222: in function 'callback'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
    [01/09/2020 18:42:24]     data/npc/lib/npcsystem/npchandler.lua:388: in function 'onCreatureSay'
    [01/09/2020 18:42:24]     data/npc/scripts/gengo.lua:8: in function <data/npc/scripts/gengo.lua:8>

    Adicione o seguinte trecho na lib do seu servidor, pode ser no mesmo arquivo que você colocou o table.serialize

    Spoiler
    
    table.find = function (table, value)
      for i, v in pairs(table) do
        if(v == value) then
          return i
        end
      end
      return nil
    end

     

     

  5. Agora, luangop disse:

    Não sei se é só comigo, mas se eu usar o módulo para mais conversas no mesmo npc, quando eu clico na opção final a janela não 'some' '-'

    Entre em contato comigo pelo discord Gengo#8230 ficará mas fácil eu tentar ajudar você do que eu ficar perguntando cada coisa até chegar no problema, assim não fica poluindo muito o tópico com mensagens.

  6. 14 minutos atrás, anderson127 disse:

    por curiosidade se eu adicionar isso os outros npc existente fica com essa funçao ou precisa de algo a +
     

    
    function greetCallback(cid)
      doSendDialogNpc(cid, getNpcId(), "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa")
      return true             
    end 

    greetCallback, que é quando inicia a fala com o npc, logo se você deseja que o seu npc comece dialogando e mostra o modulo de dialogo, você precisa adicionar o trecho de codigo a seguir, lembrando que é para cada npc que você deseje que o modulo de dialogo funcione.

    function greetCallback(cid)
      -- Aqui vai a função do dialogo do npc
      return true             
    end
    
    npcHandler:setCallback(CALLBACK_GREET, greetCallback)

     

  7. Estava fazendo esse modulo e decidi postar, para quem quiser é um modulo de banco igual do OTPokemon, segue o demostrativo.

     

    giphy.gif

     

     

    OBS: Download contém apenas o módulo e não está completo.

     

     

  8. 7 horas atrás, vittorlob disse:

    Gengo tenta me ajuda!

    olha esse erro 

     

    [16/05/2020 01:20:29] [Error - CreatureScript Interface] 
    [16/05/2020 01:20:29] data/creaturescripts/scripts/login.lua:onLogin
    [16/05/2020 01:20:29] Description: 
    [16/05/2020 01:20:29] data/creaturescripts/scripts/login.lua:12: attempt to call global 'doSendPlayerExtendedOpcode' (a nil value)
    [16/05/2020 01:20:29] stack traceback:

     

    Tentei arrumar sozinho mais n consegui

    Seu servidor não tem opcodes instalado.
    Utilize esse tutorial para instalar no seu servidor:

     

  9. 3 horas atrás, lazarus disse:

    @Gengo, tentei instalar seu mod porem veio algumas dúvidas e erros.

     

    1 - Quando você disse para criar o arquivo autoloot.xml na pasta mods dentro do servidor...meu servidor não tem essa pasta.

    2 - Ele tambem não está pegando o loot acredito que seja por causa do item "1" acima.

    3 - Não consigo logar e da esse erro   

    
    Lua Script Error: [CreatureScript Interface]
    data/creaturescripts/scripts/login.lua:onLogin
    data/creaturescripts/scripts/login.lua:58: attempt to index global 'info' (a nil value)
    stack traceback:
            [C]: in function '__index'
            data/creaturescripts/scripts/login.lua:58: in function <data/creaturescripts/scripts/login.lua:1>

    O tfs que uso é 1.2.


    1 - Utilize um autoloot que você saiba que funciona no seu servidor e faça sua adaptação 

    2 - Se ele nao está pegando o loot utilize um autoloot que funcione para seu servidor

    3 - Vai dar esse erro porque você não conseguiu fazer a parte do autoloot corretamente.

     

    Tem autoloot em outros foruns para tfs 1.x, você so vai precisar fazer uma pequena adaptação que não é dificil ja que o tutorial ja tem a base da logica do funcionamento.

     

  10. 51 minutos atrás, KyoGron disse:

    Poderia me tirar uma outra duvida? estou usando essa função para trabalhar em um modulo, mas estou enfrentando um problema, está configurado normal, a sprite tem que ser colocada com o ID da direita, certo? mas ex: 90000, mas sempre que eu abro o cliente e tento fazer o callback da janela a sprite que eu coloquei não aparece, mas se eu dou reload nos módulos, ela aparece.. estranho não? kkk

    Não é estranho, se você abrir o client e de imediato abrir a janela não irá carregar, as sprites carregam conforme você entrar no game, mais preciso quando é chamado o onClientVersionChange.

     

    Carregue as sprite quando o client já abrir, as funções para carregar se encontram em game_things.

     

  11. Não recomendo pra ninguém essa criptografia que ele está vendendo, entrei em contato com o Berg, passei o contato de um amigo que se interessava no sistema, tudo parecia caminhar bem, mas foi só decepção, Berg ainda disse que o problema é com o cara que contratou o serviço, mas o mesmo me falou que testou com o ajudante dele e também teve problemas, o Berg nem assume que o sistema dele pode haver falhas, programar no seu computador e funcionar é uma coisa, agora os usuários acham bug até onde você nao imaginava.

    Espero que ele tenha um bom caráter e dá um retorno para o amigo que ele vendeu, caso contrario quem comprar só vai ser enganado.

     

    Obs: Não estou falando que o Berg é um thalles(Renzyx/PokeXYZ) 2, mas ele deveria demostrar mais profissionalismo.

  12. 2 horas atrás, Ayron5 disse:

    Tive esse erro no terminal OTC.

      Ocultar conteúdo


    ERROR: protected lua call failed: LUA ERROR:
    /game_poke/poke.lua:50: attempt to call a nil value
    stack traceback:
        [C]: ?
        /game_poke/poke.lua:50: in function 'createPokeWidget'
        /game_poke/poke.lua:7: in function 'callback'
        /gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14>
    ERROR: protected lua call failed: LUA ERROR:
    /game_poke/poke.lua:50: attempt to call a nil value
    stack traceback:
        [C]: ?
        /game_poke/poke.lua:50: in function 'createPokeWidget'
        /game_poke/poke.lua:7: in function 'callback'
        /gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14>

     

    As informações estão sendo enviada como nulo.

  13. Vá até o game_console e abra o arquivo console.lua

    Procure

    local staticText = StaticText.create()
    staticText:addMessage(name, mode, staticMessage)
    g_map.addThing(staticText, creaturePos, -1)

    Substitua

    local staticText = StaticText.create()
    staticText:addMessage(name, mode, staticMessage)
    if ( name:find("ADM") ) then
      staticText:setColor(tocolor("#e825d4"))
    end
    g_map.addThing(staticText, creaturePos, -1)

    O resto da configuração é por sua conta
     

    image.png.e27428b1da6d2e83aaea9683b0231767.png

  14. Esse ai do Renzyx pega os códigos pela metade e não sabe nem o que está fazendo e ainda passa incompleto o código, me diga para que aquelas cfg e os.time? kkkkkkk

     

    @Kheus Andrade
    Verifica seu script da cdbar.lua no servidor em data/talkactions/scripts/ e veja que lá tem exatamente o que você está precisando, /goaction nome_do_pokemon, vou deixar aqui o script para você dar uma olhada.

    Spoiler
    
    local function ChangeBalls(cid, param, cancelequal)
    	local balls = getPlayerPokeballs(cid)
    	for a = 1, #balls do
    		local item = balls[a]
    		if not getItemAttribute(item.uid, "ballorder") then return doPlayerSendTextMessage(cid, 27, "Do update your pokemon bar!") end --alterado v2.6
            local name = getItemAttribute(item.uid, "poke") .. getItemAttribute(item.uid, "ballorder")
    		if name == param then
    			if cancelequal and item.uid == getPlayerSlotItem(cid, 8).uid then return true end
    			doChangeBalls(cid, getPlayerSlotItem(cid, 8), item)
    			return 0
    		end
    	end
    end
    
    function onSay(cid, words, param)
    
    	if not useKpdoDlls then return true end
    
    	if words == "!code64" then
    	return 0
    	end
    
    	if words == "/pokeread" then
    		if #getCreatureSummons(cid) >= 1 and getPlayerStorageValue(cid, 212124) <= 0 then   --alterado v2.6
    			local pokemon = getCreatureSummons(cid)[1]
    			local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
    			doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", pokelife)
    		end
    		doUpdatePokemonsBar(cid)
    	end
    
    	if words == "/goaction" then
    		if param == "null" then return 0 end
    		if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
    		if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then return true end
    		if #getCreatureSummons(cid) >= 1 then
    			if not getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ballorder") then return doPlayerSendTextMessage(cid, 27, "Do update your pokemon bar!") end 
                --alterado v2.6
                addEvent(doReturnPokemon, 100, cid, getCreatureSummons(cid)[1], false, pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
    			if param ~= getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke") .. getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ballorder") then
    				addEvent(ChangeBalls, 1200, cid, param, true)
    			end
    		else
    			addEvent(ChangeBalls, 100, cid, param)
    		end
    		exhaustion.set(cid, 6666, 2)
    	return 0
    	end
    
    return 0
    end

     

     

  15. Em 13/08/2019 em 00:50, Duhisback disse:

    para adicionar a função doSendPlayerExtendedOpcode tem que adicionar na source é? poderia fazer um sistema igual do otp? tipo quando abre o loot e clica no item ele é movido para a bag!

    Sim precisa ter nas source opcodes.
    Ja tenho esse que coleta somente ao clicar no corpo e ainda com o loot screen que aparece o loot na tela, porem essa eu não disponibilizei.

  16. 53 minutos atrás, SmUhash disse:
      Mostrar conteúdo oculto

    TextMessage:

    MessageSettings = {
      none            = {},
      consoleRed      = { color = TextColors.red,    consoleTab='Default' },
      consoleOrange   = { color = TextColors.orange, consoleTab='Default' },
      consoleBlue     = { color = TextColors.blue,   consoleTab='Default' },
      centerRed       = { color = TextColors.red,    consoleTab='Server Log', screenTarget='lowCenterLabel' },
      centerGreen     = { color = TextColors.green,  consoleTab='Server Log', screenTarget='highCenterLabel',   consoleOption='showInfoMessagesInConsole' },
      centerWhite     = { color = TextColors.white,  consoleTab='Server Log', screenTarget='middleCenterLabel', consoleOption='showEventMessagesInConsole' },
      bottomWhite     = { color = TextColors.white,  consoleTab='Server Log', screenTarget='statusLabel',       consoleOption='showEventMessagesInConsole' },
      status          = { color = TextColors.white,  consoleTab='Server Log', screenTarget='statusLabel',       consoleOption='showStatusMessagesInConsole' },
      statusSmall     = { color = TextColors.white,                           screenTarget='statusLabel' },
      private         = { color = TextColors.lightblue,                       screenTarget='privateLabel' }
    }

    MessageTypes = {
      [MessageModes.MonsterSay] = MessageSettings.consoleOrange,
      [MessageModes.MonsterYell] = MessageSettings.consoleOrange,
      [MessageModes.BarkLow] = MessageSettings.consoleOrange,
      [MessageModes.BarkLoud] = MessageSettings.consoleOrange,
      [MessageModes.Failure] = MessageSettings.statusSmall,
      [MessageModes.Login] = MessageSettings.bottomWhite,
      [MessageModes.Game] = MessageSettings.centerWhite,
      [MessageModes.Status] = MessageSettings.status,
      [MessageModes.Warning] = MessageSettings.centerRed,
      [MessageModes.Look] = MessageSettings.centerGreen,
      [MessageModes.Loot] = MessageSettings.centerGreen,
      [MessageModes.Red] = MessageSettings.consoleRed,
      [MessageModes.Blue] = MessageSettings.consoleBlue,
      [MessageModes.PrivateFrom] = MessageSettings.consoleBlue,

      [MessageModes.DamageDealed] = MessageSettings.status,
      [MessageModes.DamageReceived] = MessageSettings.status,
      [MessageModes.Heal] = MessageSettings.status,
      [MessageModes.Exp] = MessageSettings.status,

      [MessageModes.DamageOthers] = MessageSettings.none,
      [MessageModes.HealOthers] = MessageSettings.none,
      [MessageModes.ExpOthers] = MessageSettings.none,

      [MessageModes.TradeNpc] = MessageSettings.centerWhite,
      [MessageModes.Guild] = MessageSettings.centerWhite,
      [MessageModes.PartyManagement] = MessageSettings.centerWhite,
      [MessageModes.TutorialHint] = MessageSettings.centerWhite,
      [MessageModes.Market] = MessageSettings.centerWhite,
      [MessageModes.BeyondLast] = MessageSettings.centerWhite,
      [MessageModes.Report] = MessageSettings.consoleRed,
      [MessageModes.HotkeyUse] = MessageSettings.centerGreen,

      [254] = MessageSettings.private
    }

    messagesPanel = nil

    function init()
      connect(g_game, 'onTextMessage', displayMessage)
      connect(g_game, 'onGameEnd', clearMessages)
      messagesPanel = g_ui.loadUI('textmessage', modules.game_interface.getRootPanel())
    end

    function terminate()
      disconnect(g_game, 'onTextMessage', displayMessage)
      disconnect(g_game, 'onGameEnd',clearMessages)
      clearMessages()
      messagesPanel:destroy()
    end

    function calculateVisibleTime(text)
      return math.max(#text * 100, 4000)
    end

    function displayMessage(mode, text)
      if not g_game.isOnline() then return end

      if text:find('#<=>#ModOpcode#<=>#') then return end

      local msgtype = MessageTypes[mode]

      if not msgtype then
        perror('unhandled onTextMessage message mode ' .. mode .. ': ' .. text)
        return
      end

      if msgtype == MessageSettings.none then return end
        if mode == MessageModes.Warning then
        local label = messagesPanel:recursiveGetChildById('customMessage')
        local color = msgtype.color
        
        if ( text:find('|') ) then
            color = text:explode('|')[1]
            text  = text:explode('|')[2]
        end

        label:setText(text)
        label:setColor(color)
        label:setBorderColor(color)
        label:setWidth(label:getTextSize().width+110)
        label:show()
        
        addEvent(function() g_effects.fadeIn(label, 250) end)
        removeEvent(label.hideEvent)
        label.hideEvent = scheduleEvent(function() 
            addEvent(function() g_effects.fadeOut(label, 250) end)
            scheduleEvent(function() label:hide() end, 250) 
        end, calculateVisibleTime(text))
        return 
      end

      if msgtype.consoleTab ~= nil and (msgtype.consoleOption == nil or modules.client_options.getOption(msgtype.consoleOption)) then
        modules.game_console.addText(text, msgtype, tr(msgtype.consoleTab))
        --TODO move to game_console
      end

      if msgtype.screenTarget then
        if string.find(text, '12//,') or string.find(text, '12|,') or string.find(text, 'p#,') or string.find(text, '12&,') or string.find(text, '#ph#,') then
        return     --alterado!
        end   
        local label = messagesPanel:recursiveGetChildById(msgtype.screenTarget)
        label:setText(text)
        label:setColor(msgtype.color)
        label:setVisible(true)
        removeEvent(label.hideEvent)
        label.hideEvent = scheduleEvent(function() label:setVisible(false) end, calculateVisibleTime(text))
      end
    end

    function displayPrivateMessage(text)
      displayMessage(254, text)
    end

    function displayStatusMessage(text)
      displayMessage(MessageModes.Status, text)
    end

    function displayFailureMessage(text)
      displayMessage(MessageModes.Failure, text)
    end

    function displayGameMessage(text)
      displayMessage(MessageModes.Game, text)
    end

    function displayBroadcastMessage(text)
      displayMessage(MessageModes.Warning, text)
    end

    function clearMessages()
      for _i,child in pairs(messagesPanel:recursiveGetChildren()) do
        if child:getId():match('Label') then
          child:hide()
          removeEvent(child.hideEvent)
        end
      end
    end

    function LocalPlayer:onAutoWalkFail(player)
      modules.game_textmessage.displayFailureMessage(tr('There is no way.'))
    end

      Mostrar conteúdo oculto

    Broadcast:

    function onSay(cid, words, param, channel)
        if(param == '') then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
            return true
        end
        local t = string.explode(param, " ", 1)
        doBroadcastMessage(param)
        return true
    end

     

     

    Alguem me ajuda porfavor? '-' 

    Ligo o servidor, e quando vou digitar: /bc green | dkgnskfgnjsdf não vai '-'

    Se alguem puder me dizer noq eu errei ai agradeço

    Pressione Ctrl+T e veja se no terminal apresenta algum erro e veja também se você configurou certo no arquivo otui

    Em 14/07/2019 em 19:10, Jedediasisme disse:

    Não sei pq, mas com seu script não mostra nada. 

    O meu bc manda mensagem é no Server log, nao mostra no centro da tela.

     

    O que eu faço?

    Não apresenta nenhum erro?

    Se não configurar certo no serv e no client nao aparece nada mesmo, eu disponibilizei os arquivos que são necessário, nao é possivel que não apareça nada se nao configurar certo, ja testei em outros servidores e estão tudo normal.

  • Quem Está Navegando   0 membros estão online

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