Ir para conteúdo

Códigos C++

Encontre aqui Códigos prontos em C++.

Atenção!

- 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!

  1. 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_…

  2. Started by Roy,

    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.4k visualizações
  3. 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. 1. Atacar com a arma e usar runa ao mesmo tempo. Em player.cpp, procure por: else if((!weapon->hasExhaustion() || !hasCondition(CONDITION_EXHAUST, EXHAUST_COMBAT)) && weapon->useWeapon(this, tool, attackedCreature)) Troque por: else if(!weapon->hasExhaustion() && weapon->useWeapon(this, tool, attackedCreature)) 2. Usar runa enquanto corre. Em player.cpp, remova essa linha: setNextAction(OTSYS_TIME() + getStepDuration(dir)); Créditos: Xellath

  5. Fala galerinha Vim aqui trazer pra vocês um negocio bem simples, Mais creio que vai ser bem útil pra quem usa tfs 0.3.6, Bom oque isso faz ?, Ao invés da sua barra de vida e mana ficar com aqueles números gigantes, Vai ficar por porcentagem %%, independente do level do personagem vai ficar 100/100 % MAX, Então vamos lá vocês vão ter que ter as souces que você usa em seu servidor, Abra elas com Deve C++, Agora vá em protocolgame.cpp, Em seguida: PROCURE POR: msg->AddU16(player->getHealth()); AGORA SUBSTITUA POR: msg->AddU16((uint16_t)std::ceil(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEAL…

  6. Started by Yota,

    Boa noite, venho compartilhar o código feito por @Oneshot/ @Garou, com adaptação para tfs 0.3.6 (854) por mim. Bem, ele postou para atfs 0.4 (860), dai eu só mexi em umas linhas parar funcionar no tfs 0.3.6(854), dai vou compartilhar com vocês. Com o monster level system, o monstro passa a ter level e ganha mais HP, dá mais dano, tem mais defesa, dependendo dele. monsters.h procure por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth; Substitua por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,…

    • 11 respostas
    • 4.2k visualizações
  7. Started by Emersonssss,

    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.5k visualizações
  8. Started by rohfagundes,

    Ola, tinha umas pessoas pedindo para eu mostrar aonde muda a cor do monstro então resolvi criar um tópico para mostrar, vamos la. na source do cliente va no arquivo creature.cpp procure por: void Creature::internalDrawOutfit(Point dest, float scaleFactor, bool animateWalk, bool animateIdle, Otc::Direction direction, LightView *lightView) dentro dessa funçao ache isso: g_painter->setColor(m_outfitColor); logo abaixo add isso: if (isMonster() && m_name == "Demon") g_painter->setColor(Color::orange); if (isMonster() && m_name == "Dragon") g_painter->setColor(Color::teal); pronto todos os demons e drag…

  9. Started by Guilherme,

    Por: BananaFight > DragonElement Depois de ver muitos pedidos, Resolvi doar em nome da equipe DigiWo o código que muda a cor do nome dos monstros. Este é uma versão 1.0 que não serve mais para o DigiWo por ja termos um sistema mais avançado. Instalação Creature.cpp procure por if(healthPercent > 92) Embaixo você muda para if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } Acho que deu de entender o que tem que fazer, Adicionando Nomes Isto representa o nome do monstro/player que terá a cor do nome alterada. (Sim, vai ter …

    • 29 respostas
    • 13.3k visualizações
  10. Started by Deadpool,

    Bom, postarei como colocar para gm, adm, cm falar em red nos channels e tutores e senior tutores em orange. testado em: tfs 0.3.6 |854| pl Em chat.cpp procure por: bool ChatChannel::talk(Player* player, SpeakClasses type, const std::string& text, uint32_t _time/* = 0 e vai ter uma linha assim: if(it == m_users.end()) return false; de 2 quebra de linhas e adicione em baixo: SpeakClasses ntype = type; uint16_t channelId = getId(); if (channelId == 5) { if (player->getGroupId() == 6) { ntype = SPEAK_CHANNEL_RN; } else if (player->getGroupId() == 5) { ntype = SPEAK_CHANNEL_RN; } else if (player->getGroupId() == 4) { ntype = SPEAK_CHANNEL_RN; } e…

  11. Started by rohfagundes,

    ola =) estava aqui mexendo nas sources q tenho aqui e achei um sistema de level nos monstros q tinha em um forum q agora esta morto(kkk) Source de Teste: otxserver2(FINAL) Baseada na versão: tfs 0.3.7 entao vamos la =) em configmanager.h embaixo de: MONSTER_SPAWN_WALKBACK, coloque: MONSTER_HAS_LEVEL, em configmanager.cpp embaixo de: m_confBool[MONSTER_SPAWN_WALKBACK] = getGlobalBool("monsterSpawnWalkback", true); coloque: m_confBool[MONSTER_HAS_LEVEL] = getGlobalBool("monsterHasLevel", true); em luascript.cpp embaixo de: setField(L, "guildEmblem", mType->guildEmblem); coloque: setField(L, "levelMin", mType->levelMin); setField(…

  12. Started by Guilherme,

    Por: BananaFight > DragonElement Adaptação pra source 8.54+ LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR Vamos ao código. protocolgame.h Embaixo de void AddShopItem(NetworkMessage_ptr msg, const ShopInfo item); Adicione void parseExtendedOpcode(NetworkMessage& msg); void sendExtendedOpcode(uint8_t opcode, const std::string& buffer); protocolgame.cpp Embaixo de uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()}; enableXTEAEncryption(); setXTEAKey(key); Adicione // notifies to otclient that this server can receive extended game protocol opcodes if(operatingSystem >= CLIENTOS_OTCLIENT_LINUX) sendExtendedOpcode(0x00,…

    • 14 respostas
    • 10.9k visualizações
  13. Started by diarmaint,

    O título é auto explicativo, precisei recentemente e só achei no final de um tópico escondido, resolvi respostar. Algo bem comum em servidores derivados, encher mana e hp em pz.. Procure por esta função: bool ConditionRegeneration::executeCondition(Creature* creature, int32_t interval) Em seguida, selecione ela toda: bool ConditionRegeneration::executeCondition(Creature* creature, int32_t interval) { internalHealthTicks += interval; internalManaTicks += interval; if(creature->getZone() != ZONE_PROTECTION) { if(internalHealthTicks >= healthTicks) { internalHealthTicks = 0; creature->changeHealth(healthGain); } if(inte…

    • 5 respostas
    • 1.8k visualizações
  14. Sorry I don't speak spanish so you will have to bare with me. This is a new way for people to create npc's which use different types of currency, rather than a coming up with different items to trade with the npc or trying to edit the npc modules this method simplifies everything by providing the npc with a npc currency id. All this npc currency id is, is a storage value.. pretty simple eh? If the npc doesn't have a currency id then it will use the normal currency e.g. gold, plat, cc etc.. I originally posted this on otland, but fuck them xD Using Lailene here you can see she has a currency attribute with id of 123456 …

  15. Nao sei se estou postando na area correta mas.... vamo la Um player esta visitando quase todos os server e derrubando por um sistema de party (ele se dá auto-party) com o bot fazendo enviar pacotes inválidos que acabam crashando a sua distro: depois que fiz isso, meu server voltou ao normal (ja esta 7 dias online, desde seu ultimo nuke) procurei e achei em outro forum, e vi um cidadão de deus que encontrou a solução. (Creditos: Gesior.pl) ele diz que o codigo é pra TFS 0.4 r3777 vamos ao que interessa: Em game.cpp (nas sources) , procure por: Spoiler Party* party = player->getParty(); adi…

  16. #Introdução Bom hoje estarei trazendo aqui o sistema de Ping feito pelo Mock, com uma pequena adaptação feita por mim para funcionar em TFS 0.4(talvez podendo funcionar em outras) Pois o que ele disponibilizou foi apenas para TFS 0.3.6 e nem foi muito utilizado pela comunidade. Muitos servidores daqui para download tem script no talk mas a lib está totalmente errada e não tem o code nas sources. Esse sistema tem varias utilizades, podendo usar o comando !ping para verificar seu ms ou até mesmo por para kikar jogadores com ms muito alto... Se você não sabe o cliente já tem um sistema de ping, e getOtsystime é como os.time () + os.clock (), você tem ano,…

  17. Resumo Recentemente estava observando que quando estou usando o OTClient ao descer para andares escuros do mapa o jogador fica com uma luz ao redor e quando usamos o Tibia Client esta mesma luz não aparece, ou seja, no OTClient a necessidade do jogador usar uma tocha ou uma magia para iluminar é muito menor que no Tibia Client pois utilizando o OTC o nível de luz não fica como deveria. Após estudar alguns arquivos da source do OTC consegui encontrar a solução, e é bem simples! Instalando Dentro do arquivo creatures.cpp nas sources do OTClient modificar: light.intensity = std::max<uint8>(light.intensity, 3); por light.intensity =…

    • 3 respostas
    • 2.2k visualizações
  18. Started by LeoTK,

    Fala galera bom eu achei um código na otland que ao iniciar o tempo de respawn de um monstro no mapa mostra um efeito antes umas 3 vezes avisando e nasce o monstro igual ao tibia normal bom eu consegui colocar na minha source otx 0.3.6 e estou aqui para compartilhar com todos vocês vamos aos códigos na sua source. Procure as bibliotecas Spawn.cpp Procure por e substitua o código todo por obs: onde esta negrito é a área para editar o efeito que vai aparecer quando o monstro for nascer Procure por Neste código mude: Para: Procure por: Logo acima desse código vai ter …

  19. Started by VitorSubhi,

    Apresentação: Olá galera do Tibia King, este é meu primeiro tutorial que desenvolvo após anos apenas sugando da comunidade, chegou a hora de compartilhar um pouco de conhecimento, rsrs... Após ver que muitos usuários tinham interesse em um sistema de Trade de Points in-game resolvi trazer um sistema totalmente completo para vocês. Funcionamento: Player 1 após adquirir os Points, pode iniciar uma negociação com o Player 2 através do comando /tradepoints Player 2, Quantidade. Será aberto uma Janela de Trade com o item referente aos Points. Após ambos aceitarem a negociação será realizado a troca de Points pelo item requisitado. Observaçõe…

    • 17 respostas
    • 3.7k visualizações
  20. Started by Mor3nao,

    Eu procurei aqui no TK um sistema pra vc "desativar" o proprio pvp, te impedindo de pegar pk e nao encontrei um bacana, os que encontrei nao serviram no meu server, entao tentei fazer um, e bom, eis o resultado: Como funciona: O jogador usa um comando(!pvp) e então, ele fica impossibilitado de causar dano à outro player, a não ser, que o outro player esteja com alguma skull(obs: isso não impede que ele seja atacado, só que pegue pz) Para adicionar: Abra o seu Combat.cpp e procure por if (attacker->getSkull() == SKULL_BLACK && attacker->getSkullClient(target) == SKULL_NONE) { return true; } return false; …

    • 3 respostas
    • 2.4k visualizações
  21. Started by H3ITORR,

    Hoje vim trazer como trocar o nome das skills na source!! eu estava procurando como fazer isso mas nunca tinha achado então resolvi eu mesmo mexer e consegui achar e estou trazendo para vocês! já que eu consegui e vi vários querendo e não conseguem vim trazer a solução do tal You advanced to ou You advanced from Versão para TFS 0.4 Abra seu Dev C++ source e vá em Player.cpp e procure por! char advMsg[50]; sprintf(advMsg, "You advanced to magic level %d.", magLevel); sendTextMessage(MSG_EVENT_ADVANCE, advMsg); substitua por: ou do jeito que vocês preferirem com o nome do tal! char advMsg[50]; sprintf(advMsg, "You advanc…

  22. Bom pessoal, a muito tempo venho tentando colocar isso em meu servidor e finalmente consegui e vou repassar isso pra vocês, não entendo muita coisa de programação, mas quando a gente não pode pagar tem que aprender a se virar. Com isso, quando vc botar em sua magia setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) ela vai dar dano de energy, porem vai aparecer efeito de sangue como physical tirar sangue como fisical, e a cor do hit tomado será o de energy liláz. >> Source que usei: [8.60] TFS 0.4 Rev3996 War & Cast Então vamos lá, primeiro que vamos precisar ter os codigos da distro pra compilar. Tambem é pr…

    • 0 respostas
    • 506 visualizações
  23. 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…

  24. Started by WooX,

    doPlayerTargetCreature(cid, target) Essa função adiciona um target ao jogador ou altera caso este já possua um target. Instalação No arquivo luascript.cpp da source procure por: //doPlayerFollowCreature(cid, target) lua_register(m_luaState, "doPlayerFollowCreature", LuaInterface::luaDoPlayerFollowCreature); Acima adicione: //doPlayerTargetCreature(cid, target) lua_register(m_luaState, "doPlayerTargetCreature", LuaInterface::luaDoPlayerTargetCreature); Depois procure por: int32_t LuaInterface::luaDoPlayerFollowCreature(lua_State* L) E adicione acima: int32_t LuaInterface::luaDoPlayerTargetCreature(lua_State* L) { /…

    • 12 respostas
    • 2.2k visualizações
  25. doItemSetDuration(uid, duration) getItemDurationTime(uid) A primeira função adiciona ou altera a duração de um item, a segunda retorna o valor em segundos da duração de um item. Instalação No arquivo luascript.cpp da source procure por: //getItemWeight(uid[, precise = true]) lua_register(m_luaState, "getItemWeight", LuaInterface::luaGetItemWeight); Acima adicione: //doItemSetDuration(uid, duration) lua_register(m_luaState, "doItemSetDuration", LuaInterface::luaDoItemSetDuration); //getItemDurationTime(uid) lua_register(m_luaState, "getItemDurationTime", LuaInterface::luaGetItemDurationTime); Depois procure por: in…

    • 3 respostas
    • 2.3k visualizações
  26. ================================================================================================================ 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…

  27. Started by Mateus Robeerto,

    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
    • 986 visualizações
  28. [TUTORIAL] [UBUNTU] Como gerar e configurar uma nova chave RSA Este tutorial pode ser útil para você deixar o uso obrigatório do seu client customizado para o seu servidor. Para seguir este tutorial você precisará ter o OpenSSL instalado. Consultando se o seu sistema já tem OpenSSL Spoiler openssl version -a Gerando a chave RSA Primeiramente, vamos gerar uma nova chave RSA exclusiva Spoiler openssl genrsa -out key.pem 1024 Assim que gerado, será criado um arquivo "key.pem" no diretório e…

  29. Started by leozynho123,

    Boa noite galera, depois de muitas fuçadas em forums e ajuda de algumas pessoas, consegui tirar o delay do push de longe no caso ( + de 1 sqm do player) Bom.. vamos lá ! Em OTX Server , Em game.cpp procure por " boost::bind(&Game::playerMoveCreature, this, playerId, movingCreatureId, movingCreaturePos, toPos, false)); " aonde está "false" estará na sua sources ORIGINAL "true" então no caso a palavra "true" (ativa a função) "false" (desativa a função) ~~ TFS 0.4 Em game.cpp procure por " boost::bind(&Game::playerMoveCreature, this, playerId, movingCreatureId, movingCreaturePos, toPos, false)); " aonde está "false" estará na s…

  30. Started by Garou,

    Nome: manager Tipo: C++ Autor: Oneshot Estas são edições nas sources para criação de uma nova opção no vocations.xml que ativa ou desativa a escolha de certas vocações no Account Manager integrado aos servidores. Em vocations.h, procure por: bool attackable, needPremium; Substitua por: bool attackable, needPremium, manager; Procure por: bool isPremiumNeeded() const {return needPremium;} void setNeedPremium(bool v) {needPremium = v;} Adicione logo abaixo: bool isManagerOption() const {return manager;} void setAsManagerOption(bool v) {manager = v;} Em vocations.cpp, procure por: if(readX…

    • 1 resposta
    • 2.3k visualizações
  31. 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() ||…

  32. Started by Tryller,

    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…

  33. [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
    • 842 visualizações
  34. 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

  35. Started by Bruno Carvalho,

    Nome: advertisingBlock Versão: 2.0 Suportada: Tfs 0.3 e 0.4 Descrição: Bloqueie propagandas de outros servidor eu seu sem ficar recompilando toda hora. Em configmanager.cpp procure: m_confNumber[PACKETS_PER_SECOND] = getGlobalNumber("packetsPerSecond", 50); Abaixo adicione: m_confString[ADVERTISING_BLOCK] = getGlobalString("advertisingBlock", ""); Em configmanager.h procure: GAME_PORT, Abaixo adicione: ADVERTISING_BLOCK, Em game.cpp procure: int32_t muted = 0; bool mute = player->isMuted(channelId, type, muted); if(muted && mute) { if(muted > 0) { char buffer[75]; sprintf(buffer, "You are still …

    • 18 respostas
    • 6.5k visualizações

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Confirmação de Termo