Jump to content

C++ [Source] Trocar nome das Skills


Recommended Posts

  • Assistente

Tópico aprovado, agradecemos pela contribuição e continue assim ^^ 

APOIE NOSSAS CAUSAS - IBEACIBEAC

SEJA UM APOIADOR E AJUDE ALGUÉM

Se você acha que meu trabalho merece uma ajuda nessa quarentena, então seja um apoiador fiel doehttps://streamlabs.com/l3k0t1

 

 CANAL YOUTUBE: https://www.youtube.com/channel/UCMP25Br519j7dD1FFEMzPgA?view_as=subscriber

Meu grupo no Discord: https://discord.gg/qMS5pm9

"Você tem um sonho? Não deixe os outros te derrubarem e lute por aquilo que você acredita" by L3K0T  

 

GENTILEZA GERA GENTILEZA

 

 

Link to post
Share on other sites
6 minutos atrás, L3K0T disse:

Tópico aprovado, agradecemos pela contribuição e continue assim ^^ 

Opa muito obrigado amigo estarei arrumando o tópico vlw @L3K0T🏻

Link to post
Share on other sites
  • 6 months later...
Em 03/09/2020 em 23:12, Senju uchira disse:

image.thumb.png.ed6bc92efce4e4d296cb5f6efbd6309d.png

Desculpa a demora para responder, mas se continua esse erro é por que eu uso o sistema de upar as skills do 254+me esqueci o link mais tem aqui no fórum da base nto ns eu acho.

Link to post
Share on other sites
1 minuto atrás, H3ITORR disse:

Desculpa a demora para responder, mas se continua esse erro é por que eu uso o sistema de upar as skills do 254+me esqueci o link mais tem aqui no fórum da base nto ns eu acho.

não entendi poderia refurmula sua resposta

 

Link to post
Share on other sites
4 minutos atrás, Senju uchira disse:

não entendi poderia refurmula sua resposta

 

No caso eu uso esse tipo de stages skills.

Por isso o meu me diz o lvl certinho que to de skills.

E aqui embaixo seria o limitador do max lvl das skills.

 

Link to post
Share on other sites
Em 16/03/2021 em 15:08, Senju uchira disse:

eu uso esse tmbm

Como você editou no seu player.cpp? Talvez possa ser isso, se você retirou a parte onde mostra a skill antiga e a nova a mensagem fica dessa forma.

Contatos:

Discord: Marvok#9855

 

Link to post
Share on other sites
  • 2 weeks later...
Em 21/03/2021 em 10:49, Marvok disse:

Como você editou no seu player.cpp? Talvez possa ser isso, se você retirou a parte onde mostra a skill antiga e a nova a mensagem fica dessa forma.

eu fiz igual o tutorial acima

Link to post
Share on other sites
  • 1 year later...
Em 02/04/2021 em 00:28, Senju uchira disse:

eu fiz igual o tutorial acima

tente refazer novamente!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


  • Similar Content

    • By Tio Dootserv
      Preciso de ajuda. Na minha base o player não pode empurrar enquanto targeta. Eu quero que ele continue targetando, e empurre o alvo. Agradeço desde já.
      game.cpp
    • By FeeTads
      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, então decidi ir fuçar na source kkkkkkkkkkk, achei algumas coisas e montei um código funcional que NÃO conta frag em determinada area, com todas certeza esse script pode ser melhorado, pois peguei algumas funções do PathMatching pra ele funcionar 100%.
      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2, não sei se funciona em TFS.

      vá na pasta da sua source e procure pelo arquivo player.cpp

      procure pela função 
       
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      e abaixo de: (caso queira que warsystem de guilds não contem frag, cole acima de: )

       
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      cole o código:

       
      Position posi = target->getPosition(); AStarNodes nodes(posi.x, posi.y); int x1 = //POSIÇÃO X SUPERIOR ESQUERDA int y1 = //POSIÇÃO Y SUPERIOR ESQUERDA int x2 = //POSIÇÃO X INFERIOR DIREITA int y2 = //POSIÇÃO Y INFERIOR DIREITA //essas 4 posições formam o quadrado int z = //POS EM Z; for(int i = x1; i <= x2; i++){ for(int j = y1; j <= y2; j++){ if (posi.x == i && posi.y == j && posi.z == z){ return true; } } }
      após isso vá até a função:
       
      bool Player::addUnjustifiedKill(const Player* attacked, bool countNow)
      ABAIXO DE: 
       
      if(!g_config.getBool(ConfigManager::USE_FRAG_HANDLER) || hasFlag( PlayerFlag_NotGainInFight) || g_game.getWorldType() != WORLDTYPE_OPEN || hasCustomFlag(PlayerCustomFlag_NotGainUnjustified) || hasCustomFlag( PlayerCustomFlag_NotGainSkull) || attacked == this) return false;
      e cole o código quase parecido só que com UMA mudança.
       
      Position posi = attacked->getPosition(); //aki vai ser attacked-> em vez de target-> AStarNodes nodes(posi.x, posi.y); int x1 = //POSIÇÃO X SUPERIOR ESQUERDA int y1 = //POSIÇÃO Y SUPERIOR ESQUERDA int x2 = //POSIÇÃO X INFERIOR DIREITA int y2 = //POSIÇÃO Y INFERIOR DIREITA //essas 4 posições formam o quadrado int z = //POS EM Z; for(int i = x1; i <= x2; i++){ for(int j = y1; j <= y2; j++){ if (posi.x == i && posi.y == j && posi.z == z){ return true; } } }
      e pronto, só compilar a source novamente e não vai mais contar frag nessa area, porém todo o resto, como frag list, deathlist, warsystem etc... vai contar frag, porém frag pra redSkull e etc.. não irá contar.

      caso queira adicionar mais posições, por exemplo, castle24h, castelo 48h, basta duplicar o for com as posições corretas.

      TODO O SCRIPT é feito no arquivo player.cpp e nada mais.

      **Eu fiz sozinho as alterações e o simples código por isso vim disponibilizar sem algum crédito**
      100% funcional e testado por mim kkkk
    • By FeeTads
      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: https://tibiaking.com/forums/topic/101086-otimizado-autoloot-in-sources-for-otx2-ou-menor/
       

      caso alguém ja utilize esse autoloot e esteja com o problema de remover items do autoloot
      só ir em player.cpp e trocar

      isso:
       
      void Player::removeAutoLoot(uint16_t id) { if(checkAutoLoot(id)) { return; } AutoLoot.remove(id); }
      por isso:
      void Player::removeAutoLoot(uint16_t id) { if(!checkAutoLoot(id)) return; for(std::list<uint16_t>::iterator it = AutoLoot.begin(); it != AutoLoot.end(); ++it) { if((*it) == id) { AutoLoot.erase(it); break; } } }
      todos os créditos ao Naze, não sei se alguém mais fez esse código, mas como peguei do link citado acima que é post dele deixo aqui o autoloot 100% funcional direto nas sources
    • By koyotestark
      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 é preciso de um programa para compilar [gerar o executavel do servidor]
       usei o: Stians Repack Dev-Cpp 0.2 - 64bit {meu sistema é 64 bits, entao tive que usar este.}
       Vamos lá, abra o Stians Repack Dev-Cpp 0.2 {Programa que usei} e encontre o "TheForgottenServer.dev" para abrir o projeto "caso nunca tenha feito isso antes.
       abra o game.cpp do lado esquerdo <<
       
       Feito isso, aperte CTRL + F para fazer uma pesquisa e procure por: case COMBAT_ENERGYDAMAGE:
      vai estar assim
       
      case COMBAT_ENERGYDAMAGE: { textColor = COLOR_PURPLE; magicEffect = MAGIC_EFFECT_ENERGY_DAMAGE; break; }  
       Você vai substituir por:
       
      case COMBAT_ENERGYDAMAGE: { Item* splash = NULL; switch(target->getRace()) { case RACE_BLOOD: textColor = COLOR_PURPLE; magicEffect = MAGIC_EFFECT_DRAW_BLOOD; splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_BLOOD); break; default: break; } if(splash) { internalAddItem(NULL, target->getTile(), splash, INDEX_WHEREEVER, FLAG_NOLIMIT); startDecay(splash); } break; }  
       Observação, você "que nunca fez isso" deve pegar do case até  e a chave fechada } <<, este simbolo aqui
       Feito isso, aperte F9 para iniciar a compilação {Lembre-se antes de renomear, ou apagar a pasta Obj } se tudo correr bem, o executavel irá ser criado.
        OBS: Como citado acima, não sou programador, então não saberei responder caso ocorra algum erro. Mas tentarei
    • By stackcheese
      E aí guys, venho a um tempo vendo as datapacks que lançam diariamente e resolvi postar o sistema de setas no cast (não sei se alguém já postou algo relativo o_o) 

      para fazer esse sistema eu estou usando a última versão do OTX do github...  LINK PARA BAIXAR (otx do mattyx)
       
      maioria das pessoas já sabem o que é esse sistema, mas pra quem não sabe, é a possibilidade de alternar o cast apertando CTRL + QUALQUER ARROW, mesmo que já tenha em vários servers, algums ainda não tem então toma aí.
       
       
      em
      protocolgame.cpp
       
      procure por 
       
      void ProtocolGame::spectate(const std::string& name, const std::string& password) dentro das chaves após 
       
      player->client->addSpectator(this);  
      coloque:
       
      std::ostringstream ss; std::string value = "-1"; player->getStorage("broadcast_start", value); time_t ctime = time(NULL); uint32_t total = ctime - std::stoi(value); uint32_t hours, minutes, seconds; minutes = total / 60; seconds = total % 60; hours = minutes / 60; minutes = minutes % 60; ss << "Players watching " << player->getName() << ": " << (player->client->list().size()) << "\nBroadcast time: "; if (hours > 0) { ss << hours << " hour(s)"; } if (minutes > 0) { ss << minutes << " minute(s)"; } if (seconds > 0) { ss << seconds << " second(s)"; } ss << "\nYou can Switch channels by using CTRL + arrow keys!"; std::string msg = ss.str(); this->m_lastSwitch = time(NULL); this->sendTextMessage(MSG_INFO_DESCR, msg);  
      no final desse escopo após a }, adicione:
       
      void ProtocolGame::spectatorTurn(uint8_t direction) { std::vector<Player*> candidates; int index = 0; for (AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { if (!it->second->client->isBroadcasting()) { continue; } if (it->second->client->getPassword() != "") { continue; } if (it->second->client->banned(getIP())) { continue; } if (it->second == player) { index = candidates.size(); } candidates.push_back(it->second); } if (candidates.size() < 2) { return; } if (direction == 0 || direction == 1) { direction = uint8_t(1); } if (direction == 2 || direction == 3) { direction = uint8_t(-1); } if (index == 0 && direction == -1) { direction = uint8_t(0); } Player* _player = candidates[(index + direction) % candidates.size()]; if (!_player || player == _player) { return; } if (!_player || _player->isRemoved() || !_player->client->getOwner()) { return; } if ((time(NULL) - this->m_lastSwitch) < 1) { return; } this->m_lastSwitch = time (NULL); player->client->removeSpectator(this); player->unRef(); player = _player; player->addRef(); knownCreatureSet.clear(); player->sendCreatureAppear(player, this); player->sendContainers(this); if (PrivateChatChannel * channel = g_chat.getPrivateChannel(player)) chat(channel->getId()); player->client->addSpectator(this); }  
       
      agora em:
       
      void ProtocolGame::parsePacket(NetworkMessage &msg)  
      procure por:
       
      case 0xA1: parseCancelTarget(msg); break;  
      tenha certeza de estar dentro do escopo:
       
      if(m_spectator) { switch(recvbyte) {  
       
      então abaixo de "case 0xA1: parseCancelTarget(msg); break;" coloque:
       
       
      // Ctrl + Arrow case 0x6F: case 0x70: case 0x71: case 0x72: Dispatcher::getInstance().addTask( createTask(boost::bind(&ProtocolGame::spectatorTurn, this, recvbyte - 0x6F))); break;  
      feito, mas agora precisamos adicionar algumas coisas em
       
      protocolgame.h
       
      procure por:
       
      void chat(uint16_t channelId);  
      adicione abaixo:
       
      void spectatorTurn(uint8_t direction);  
       
      agora, lá no final do arquivo, procure por:
       
      Player* player;  
      coloque abaixo:
       
      time_t m_lastSwitch;  
      agora só compilar e testar
       
      apenas umas imagem mostrando que deu certo abaixo...
       
      caso der algum tipo de erro, fico a disposição para ajudar
       
      Opcional:
       
      mensagem MOTD (mensagem do dia) modificada igual abaixo:
       

       
       
       
      2: 
       
      informações de level / specs ativos na janela de login igual a imagem abaixo:


       
       
       
       
      é isso.

      quem fez esse sistema eu não sei, apenas peguei de uma source que tinha e coloquei explicado aqui, então de créditos eu coloco 1% eu @stackcheese por ter explicado como por hihi

       
×
×
  • Create New...

Important Information

Confirmação de Termo