Códigos C++
Encontre aqui Códigos prontos em C++.
- Esta área é para publicação de Scripts prontos para rodar em Ots.
- Favor manter tópicos organizados! Utilizar code, spoiler, fontes, cores e espaçamentos equilibrados. Tópicos desorganizados, sem formatação ou colados sem alteração serão excluídos.
- Se possível informe se o script foi testado. Explique como instalar e publique imagens/gifs/videos para mostrar o sistema funcionando.
- Ao usar um Script que gostou, dê reputação ao membro que publicou e comente no tópico, para que mais códigos sejam publicados na seção!
- Se o conteúdo não for seu, adicione Créditos!
85 tópicos neste fórum
-
Bem eu não sei nem por onde começar já que. Acredito eu que faz uns 2 anos mais ou menos que não me envolvo com Tíbia então hoje vim trazer algo novo para todos nós. Bem o que è Discord RPC? Nada mais nada menos que, aquela janelinha que mostra qual jogo você está jogando no Discord. E ao passar o mouse em cima do úsuario você pode checar os detalhes. Bem o Tíbia em sí já tem o Discord RPC por padrão mas o que eu trouxe a vocês o Discord-RPC que você pode editar como você quiser. Por exemplo. Talvez seja uma contribuição bem clichê. Mas para aqueles que deseja que os players mostre para os outros que está jogando seu o…
- 11 respostas
- 7.1k visualizações
-
Hoje estou bonzinho e vou postar mais uma coisa que eu fiz pro otserver que estou desenvolvendo e vou compartilhar com vocês. Você tem aquela nova moeda no seu servidor, mas os NPCs não aceitam ela e tal? Vou te dar a solução nesse tópico. ================================================================================================================ Testado no TFS 1.3 na versão 8.60 ================================================================================================================ Em player.cpp, procure a função Player::updateSaleShopList Troque essa linha if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_…
- 9 respostas
- 3.8k visualizações
- 1 follower
-
SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player. **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag. SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintax…
- 4 respostas
- 2.5k visualizações
- 1 follower
-
Tela Estendida para OTClient V8 (TFS 0.4) Olá pessoal, hoje estou trazendo uma tela estendida para o OTClient V8 na versão mais recente. Espero que isso seja útil para vocês! Esta versão vem com atualizações de código que são fáceis de entender. Testado em TFS 0.4. Passo 1: Modificações no const.h Abra o arquivo const.h e encontre: #define NETWORK_MAX_SIZE ou #define NETWORKMESSAGE_MAXSIZE Altere para: #define NETWORK_MAX_SIZE 49180 ou, dependendo da sua source, #define NETWORKMESSAGE_MAXSIZE 49180 Passo 2: Modificações no Protocollgame.cpp Encontre: ((x >= myPos.x - 8 …
-
- 1 resposta
- 1.3k visualizações
- 2 followers
-
-
================================================================================================================ Eae rapaziada, eu vou postar uma atualização do sistema original feito pelo Movie , com algumas adições e explicações. ================================================================================================================ Testado no TFS 1.2 | OTC 10.98 ================================================================================================================ Source do Server Spoiler Em player.cpp, procure a função Player::updateSaleShopList Troque e…
-
- 0 respostas
- 219 visualizações
- 1 follower
-
-
Olá Tibiakings, Source: https://github.com/OTCv8/forgottenserver/commit/2839d4d7a8ad3597eff6c786f4ceb9b1b4b4456b#diff-e26c2fbabf42953e9a2f3e4c5749d0699804da9406cb340cc393afd3b7be4955 Datapack: creaturescripts/creaturescripts.xml <event type="extendedopcode" name="GameStore" script="game_store.lua" /> creaturescripts/scripts/login.lua player:registerEvent("GameStore") creaturescripts/scripts/game_store.lua https://github.com/OTCv8/otcv8-tools/blob/main/server/shop/shop.lua lib/lib.lua dofile('data/lib/core/json.lua') lib/core/json.lua https://github.com/OTCv8/otcv8-tools/blob/main/server/…
- 2 respostas
- 1.3k visualizações
- 1 follower
-
Tooltips.webp tfs-tooltips-master.zip Tooltips.webp credits : oen44
-
- 4 respostas
- 1.3k visualizações
- 1 follower
-
-
Nome: Fist Fighting/Attackspeed Tipo: C++ Autor: Oneshot Já vi alguns pedidos no fórum sobre a skill Fist Fighting, onde quanto mais você treinasse ela, mais rápido você atacaria no jogo, e parece que isto é um feature do Tibia. Como é uma modificação muito fácil nas sources, resolvi passar aí para a galera. Por padrão, o intervalo entre ataques do Tibia é 2000ms, ou seja, um ataque físico a cada dois segundos. Eu fiz uma pequena modificação nas sources onde o Fist Fighting seria inversamente proporcional ao tal intervalo, ou seja, quanto maior o valor da skill, menor seria o intervalo. Fiz de um modo que um jogador com Fist Fighting de nível 200, então, teria uma r…
- 14 respostas
- 8.3k visualizações
- 1 follower
-
Alterei a função canWalkthrough para Impedir o atravessamento de pisos específicos (como 11059 e 11060) se já houver um jogador sobre eles e assim ninguem entra no mesmo depot que é comum em pvp então vamos retirar isso. Verificar o tipo de mundo (PVP / non-PVP / etc..) e zonas de proteção. No PVP, jogadores podem atravessar se estiverem fora de uma zona de proteção ou quando ambos não estiverem em combate. Segue as alterações: vá em Player.cpp e ache: bool Player::canWalkthrough(const Creature* creature) const { if(creature == this || hasFlag(PlayerFlag_CanPassThroughAllCreatures) || creature->isWalkable() ||…
-
- 1 resposta
- 671 visualizações
- 1 follower
-
-
Estou com algumas "revs não alteradas" e gostaria de compartilhar com vocês pois pode ajudar em alguma coisa. https://www.mediafire.com/folder/t3y80vqcnow4d/sources_revs_l3k0t
-
- 0 respostas
- 1.2k visualizações
- 1 follower
-
-
Se você está enfrentando o problema de jogadores ganhando experiência ao matar outros jogadores em um servidor PVP, e já tentou várias soluções sem sucesso, este tutorial vai te ajudar a resolver isso. A modificação que vou mostrar foi eficaz para mim e pode ser a solução para o seu servidor também. Passo 1: Acesse o arquivo creature.cpp Primeiro, abra o arquivo creature.cpp, que está localizado na pasta src ou sources do seu servidor. Esse arquivo contém a lógica das criaturas, incluindo a parte de quando um jogador mata outra criatura. Passo 2: Localize o onAttackedCreatureKilled Dentro do arquivo, procure pela função onAttackedCreatur…
-
- 0 respostas
- 501 visualizações
- 1 follower
-
-
Tutorial: Adicionando Surprise Bags no Drop de Monstros Código foi criado para uma versão 8.60 do Crystal Server. provavelmente funciona em TFS 0.4/0.3 Passo 1: Atualize o configmanager.cpp No arquivo configmanager.cpp, adicione o seguinte código para permitir que a configuração de SURPRISE_BAGS seja ativada/desativada no config.lua: m_confBool[SURPRISE_BAGS] = getGlobalBool("dropSurpriseBagsFromMonsters", false); Passo 2: Atualize o configmanager.h No arquivo configmanager.h, defina a variável SURPRISE_BAGS na parte dos booleans: SURPRISE_BAGS, Passo 3: Modifique o items.cpp No arquivo items.cp…
- 2 respostas
- 527 visualizações
- 1 follower
-
Como Evitar Quedas no Servidor ao Exibir Mensagens de Admin (Error - void ServiceManager::run()) NETWORK: O endereço solicitado não é válido no contexto (Error - void ServicePort::open(IPAddressList, uint16_t)) NETWORK: O endereço solicitado não é válido no contexto Problema: Em determinadas situações, a exibição de mensagens de admin está causando a queda do servidor. Isso ocorre quando uma exceção não tratada é lançada ao tentar abrir portas de serviço. Solução: A solução envolve modificar o código em server.cpp para evitar que o servidor caia quando uma exceção é lançada. Vamos alterar o método ServicePort::open para tratar exceç…
- 1 resposta
- 282 visualizações
- 1 follower
-
Instalando o Sistema max_packets_per_seconds no Servidor 0.x Passo 1: Modificar o Connection.cpp Abra o arquivo Connection.cpp. Procure pela função: void Connection::parseHeader(const boost::system::error_code& error) Antes da linha: --m_pendingRead; try Adicione o seguinte código: uint32_t timePassed = std::max<uint32_t>(1, (time(NULL) - m_timeConnected) + 1); if ((++m_packetsSent / timePassed) > static_cast<uint32_t>(g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND))) { std::cout << convertIPAddress(getIP()) << " disconnected for exceeding packet per second limit." << std::endl;…
-
- 0 respostas
- 328 visualizações
- 1 follower
-
-
Square System Esse sistema irá possibilitar você colocar uma square em determinado player. Em luascript.cpp, acima de registerMethod("Player", "isPlayer", LuaScriptInterface::luaPlayerIsPlayer); coloque isso registerMethod("Player", "sendCreatureSquare", LuaScriptInterface::luaSendCreatureSquare); Agora, acima de int LuaScriptInterface::luaPlayerCreate(lua_State* L) Coloque isso int LuaScriptInterface::luaSendCreatureSquare(lua_State* L) { // player:sendCreatureSquare(creature, color) Player* player = getUserdata<Player>(L, 1); if (!player) { lua_pushnil(L); return 1; } Creature* cre…
- 6 respostas
- 3.5k visualizações
- 1 follower
-
Not completely tested and not all features are working but I am releasing this so that it is considered to be fixed and merged with the official branch. Sql INSERT INTO `players` (`id`, `name`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `save`, `skull`, `skulltime`, `lastlogout`, `blessings`, `onlinetime`, `deletion`, `balance`, `offlinetraining_time`, `offlinetraining_skill`, `stamina`, `skill_fist`, `skill…
-
- 6 respostas
- 7.5k visualizações
- 1 follower
-
-
Não jogar itens pelo teleportes C++ Bom.. o nome já diz, qualquer um que jogar itens nos teleportes do seu otserv, o mesmo será removido, como aquelas lixeiras, porem esse sistema é pela source, descartando scripts .LUA. Em teleporte.cpp ache: void Teleport::__addThing(Creature* actor, int32_t, Thing* thing) { if(!thing || thing->isRemoved()) return; Tile* destTile = g_game.getTile(destination); if(!destTile) return; if(Creature* creature = thing->getCreature()) { g_game.addMagicEffect(creature->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost()); creature->getTile…
- 3 respostas
- 520 visualizações
- 1 follower
-
O propósito é criar uma nova função em creaturescripts que será acionada toda vez que um novo report (CTRL + R) for aberto. Eu implementei para enviar uma notificação no grupo do Telegram, contendo os dados do report. Isso garantirá que os GMs tenham acesso aos reports dos jogadores mesmo quando não estiverem logados, e também evitará que algum report seja perdido caso o jogador saia do servidor. A parte do Telegram é apenas um exemplo. Você pode ajustar o script para executar outras ações desejadas. creatureevent.cpp: Dentro deste arquivo, localize a função: uint32_t CreatureEvent::executeChannelLeave(Player* playe…
- 3 respostas
- 811 visualizações
- 2 followers
-
salve rapaziada, do TK, esses tempos eu tava a procura de um autoloot bom e eficiente, e como vocês devem saber, o autoloot usado nos scripts .lua são bem "pesados" o @Naze fez um excelentíssimo trabalho e disponibilizou um script de autoloot na source, porém como a vida é dificil, ele tem alguns bugs de função e um deles é no "remove autoloot" que quando o player digita "!autoloot remove, nome-do-item" nada acontece, eu decidi mexer e vim disponibilizar arrumado pra vcs. LEMBRANDO QUE 100% DOS CRÉDITOS SÃO AO @Naze porém se vc procurar no tópico dele ainda vai estar bugado, então resolvi deixar aqui certinho pra ajudar quem precisar. Link do tópico do naze…
- 7 respostas
- 2.1k visualizações
- 1 follower
-
OLA PESSOAL ESTOU TERMINANDO MEU OTSERVER POREM CHEGUEI NAS OUTFITS TIPO TEM AS outfit.XML QUE SE O JOGADOR FOR PREMIUM ELE TEM OUTFITS EXCLUSIVAS OK! ENTAO POREM MEU SERVER A PREMIUM TEM STORAGE AI OS PLAYER PREMIUM NAO LIBERA ESSE OUTFITS TENTEI ISSO ABAIXO MAIS NAO FUNCIONA, ALGUEM PODE ME AJUDAR! GRATO DESDE JA! <outfit type="1" looktype="128" name="Citizen" unlocked="yes" storage="123" enabled="yes" /> SE CASO FOR NAS SOURCES EU TENHO PRA COMPILAR
-
- 0 respostas
- 208 visualizações
- 1 follower
-
-
salve rapaziada, vi que tem bastante procura por esse sistema de "proteção" contra player que por algum motivo ficam com proteção 100% de algum elemento ou dano, por exemplo MIGHT RING (-20% death) + SSA (-80% Death), totalizando 100% de proteção contra o elemento death, ou seja, o player fica imortal, pra previnir isso, vai aqui 2 commits caso vc saiba mexer com github: commit 1: max absorb all commit 2: fix, max protect all caso saiba mexer com github, estão os 2 commits, caso não saiba siga o passo a passo abaixo: vá até configmanager.cpp procure por: m_confString[MAP_AUTHOR] = getGlobalString("mapAuthor", "Unknown"); ACIMA adicione: m_…
-
- 5 respostas
- 2.3k visualizações
- 1 follower
-
-
bom resolvi mexer um pouco com a rev 3884 e encontrei com um bug na que estou mexendo, que seria o seguinte, tudo que vc dar target ao cancelar vc toma DC, seja em monstros ou npc pra resolver segue essas alterações na source: protocollgame.cpp ache: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->put<char>(0xA3); msg->put<uint32_t>(0); //? creatureId? } } altere para: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->put<char>(0xA3); } } de rebuild e…
-
- 2 respostas
- 1.7k visualizações
- 1 follower
-
-
Olá galera, hoje vim trazer um tutorial bem completinho para vocês do sistema de "Target Animada pela source do OTC" renovada para otcliente 0.6.6 e 0.6.7 e espero que gostem Imagens do Target Azul;; Imagens do Target Vermelho;; VIÍDEO:;; Spoiler TUTORIAL 1° Vai na pasta do seu otcliente e ache a pasta da source dele otclient-0.6.6\src\client dentro dela abre o arquivo creature.cpp e procure;; void Creature::draw(const Point& dest, float scaleFactor, bool animate, LightView *lightView) { if(!canBeSeen()) return; Point animationOffs…
- 1 resposta
- 3.6k visualizações
- 1 follower
-
TUTORIAL - TELEPORTE SUMMON Introdução: Fala pessoal, hoje vim aqui liberar um código para que futuros criadores de pokemon não usem GLOBALEVENTS ou MOVEMENTS para teleportar seus pokemons a distancia... hoje irei ensinar a você não usar mais esses scripts que aonde da maioria da vezes crash o servidores em WINDOWS em testes. Sobre o Sistema: Esse sistema tem a função de teleportar seu pokemon a certos sqm, tipo assim, você tem um pokemon e a distancia dele é 7 sqm, ao passar os 7 sqm ele teleporta para você, seja em qualquer lugar até de baixo da terra ou lugares super longe (Não se preocupe o problema do pokemon Morrer com source novas será re…
- 8 respostas
- 4.2k visualizações
- 1 follower
-
by L3K0T Fade Tile Bom galera hoje vou ensina a vocês como deixar seu mapa com a alteração fade tile, exatamente igual ao vídeo do meu canal abaixo, com apenas algumas "alterações" na SOURCE do seu Otclient 0.6.6. VÍDEO;; Spoiler TUTORIALBY L3K0T 1° VÁ EM na source do seu otcliente src\client e abra o mapview.cpp e ache;; m_optimizedSize = Size(g_map.getAwareRange().horizontal(), g_map.getAwareRange().vertical()) * Otc::TILE_PIXELS; abaixo coloque;; m_fadeL3K0TTime = 150; ache;; void MapView::draw(const Rect& rect) { // update …
- 7 respostas
- 3.4k visualizações
- 1 follower
-
L3K0Ttfs 0.4 Bom galera hoje vim trazer para aqueles que não tem em seu tfs a função DoSetCreatureLight, é uma função de LUZ, alguns tfs tem e outros não tem então resolvi compartilhar. abra seu luascript.cpp e procure por: lua_register(m_luaState, "getCreatureHealth", LuaInterface::luaGetCreatureHealth); em baixo add //doSetCreatureLight(cid, lightLevel, lightColor, time) lua_register(m_luaState, "doSetCreatureLight", LuaInterface::luaDoSetCreatureLight); Procure;; int32_t LuaInterface::luaGetThingFromPos(lua_State* L) { //getThingFromPos(pos[, displayError = true]) //Note: // stackpos = 255- top thing (movable item…
- 3 respostas
- 1.4k visualizações
- 1 follower
-
Tutorial Heath Bar Oi Galera tudo bem??? hoje vou ensinar vocês como por a Health Bar como na imagem acima "dentro do circulo amarelo" no seu otcliente 0.6.6 e 0.6.7. Para começar essa alteração é pela source, caso não tenha source do seu OTC não adianta... Recomendo baixar otclientes com sources 1° vai na pasta da source do seu otcliente e abre o arquivo creature.cpp e ache;;; if(drawFlags & Otc::DrawBars && (!isNpc() || !g_game.getFeature(Otc::GameHideNpcNames))) { g_painter->setColor(Color::black); g_painter->drawFilledRect(backgroundRect); g_painter->setColor(fillColor); g_painter->…
- 3 respostas
- 3.4k visualizações
- 1 follower
-
Olá pessoal! Vamos resolver esse problema dos monstros não passarem por cima de outros corpse para te atacarem... Trata-se de uma pequena modificação no rev3777 tfs 0.4, um bug comum nesse TFS. Aqui está a alteração que fiz para que funcione! Tile.cpp: if(!creature->canWalkthrough(*cit)) return NOTPOSSIBLE; //NOTPOSSIBLE Mude para: if (!creature->canWalkthrough(*cit) && (!cit->isCreature() || cit->isCorpse())) return NOTPOSSIBLE; // NOTPOSSIBLE Após isso, exclua todo o conteúdo da pasta "obj" e compile novamente. Pronto, o problema estará resolvido! Créditos para mim, @L3K0T
- 18 respostas
- 2.9k visualizações
- 1 follower
-
Para quem deseja utilizar o 'IncreaseMagicPercent' no arquivo items.xml, que aumenta o dano mágico em porcentagem No arquivo game.cpp depois. Player* attackerPlayer; if (attacker) { attackerPlayer = attacker->getPlayer(); } else { attackerPlayer = nullptr; } Player* targetPlayer = target->getPlayer(); if (attackerPlayer && targetPlayer && attackerPlayer->getSkull() == SKULL_BLACK && attackerPlayer->getSkullClient(targetPlayer) == SKULL_NONE) { return false; } damage.primary.value = std::abs(damage.primary.value); …
- 7 respostas
- 878 visualizações
-
Depois de milhões de anos sem programar porcaria nenhuma... Eu desenvolvi este sistema como um método de estudo. (C++) Este sistema foi inspirado no Auto Loot System por @psychonaut. (OTland) Criei o mesmo na versão mais recente do tfs. Auto Loot System for TFS 1.3 Como funciona? Simples, quando você mata um monstro e abre o corpo (você precisa clicar no corpo), os itens vão para o seu personagem. Instalando em actions.cpp, encontre: if (corpseOwner != 0 && !player->canOpenCorpse(corpseOwner)) { return RETURNVALUE_YOUARENOTTHEOWNER; } e mude isso para: if (corpseOwner != 0 &&…
- 30 respostas
- 11.2k visualizações
- 1 follower
-
Salve Galera, olhando em minhas libs achei um script muito bom !! Em alguns servidores derivados o Skill Fist Fighting influencia no Attack Speed do Player, Então .... Segue a Formula na source que faz essa magica : Em Player.cpp Procure : uint32_t Player::getAttackSpeed() const Mude Atualize para esse função : uint32_t Player::getAttackSpeed() const { int32_t SpeedAttack; SpeedAttack = vocation->getAttackSpeed() - (getSkill(SKILL_FIST, SKILL_LEVEL) * 10); if (SpeedAttack < 500) { return 500; } else { return (uint32_t) SpeedAttack; } } Explicando : Ele irá verifica o Attack Speed padrão no Vocations.xml e irá verifica o Skill Fist do Pla…
- 19 respostas
- 11.3k visualizações
-
[TUTORIAL] Adicionar "Summoned by..." na descrição do monstro ao dar Look Como é uma alteração pequena, apesar de simples achei legal compartilhar. Ao dar look no summon de algum jogador você consegue identificar quem foi que o invocou. Acesse monster.h Altere o código abaixo: Spoiler std::string getDescription(int32_t) const override { return strDescription + '.'; } Para: Spoiler std::string getDescription(int32_t) const override { Creature* creature = getMaster(); if (creature) { return strDescription + ". Summoned by " + creature->getName() + "."; } ret…
-
- 2 respostas
- 799 visualizações
-
-
[TUTORIAL] Retirar o efeito de sangue nos monstros quando receberem ataque Dependendo do aspecto que você deseja dar ao seu servidor, pode ser que seja necessário retirar alguns efeitos. Na imagem abaixo você pode observar um efeito de respingo de sangue que ocorre quando os monstros levam dano. Pode ser interessante retirar este efeito em determinadas propostas de servidores alternativos, com ar mais amigáveis. (Ex: Pokemon) (Imagem demonstrando o efeito de sangue nos monstros) Acesse creature.cpp E remova o seguinte código: Spoiler Item* splash; switch (getRace()) { case RACE_VENOM: splash…
-
- 0 respostas
- 563 visualizações
-
-
Testado em tfs 0.4 e otx 2! Em monsters.h procure por: Spoiler bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth; E substitua por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, hideLevel; Busque por: int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHeal…
- 19 respostas
- 3.7k visualizações
- 3 followers
-
Uns dos problemas das maiorias dos otserv casual que estão online é o autoloot, alguns com erros e defeito na checagem dos containers e sempre consumindo muito por ser em lua fazendo checagens de tile, corpo, itens e etc. Por isso decidi da uma contribuição a essa comunidade que me evoluiu bastante um autoloot diretamente na source na função que insere os itens no corpo, otimizando em 100% na hr da entrega do item, e não tendo problemas ocasionais como corpos sobre corpos ou varias bags. Esse sistema já é bem comum quando comprado, mas gratuito acredito que ainda não tinha disponível, então fiz esse totalmente do 0 na source tfs 0.4 rev 3999 (do yan) e pa…
- 16 respostas
- 5.4k visualizações
Quem Está Navegando 0
- Nenhum usuário registrado visualizando esta página.