Ir para conteúdo

Posts Recomendados

Script deve trabalhar com TFS 0.3.4/0.3.5 (testado em 0.3.4pl2).

É transmitido msg como:

 

14:57, Cfaniack, Vetrino, lubie Chodzic Na Obcasie - fez combo!

14:58, Niegrzeczny, Gzresiek, Van Master Aka Loffciam Olcie - fez combo!

15:01, Bocejador Thug, o ISEE, Killian - fez combo!

 

e show de animação no jogo.

 

configuração padrão:

comboTime = 100 - sds cheque passado em 0,1 seg

comboMembers = 2 - show de animação (se animação = 1) quando dois ou mais jogadores do combo

comboFriends = 3 - salvar uid de jogadores como "amigos", quando mais de 3 jogadores do combo broadcast nicks / dos jogadores quando 3 ou mais 'amigos' do combo mais de uma vez

comboFriendsClearTime = 5 * 60 * 1000 - remove 'amigo' do jogador 'lista de amigos, quando não fiz combo de 5 minutos

comboFriendsClearInterval = 1 * 60 * 1000 - remove 'velhos' amigos 'a cada minuto

comboShowAnimation = 1 - show de animação no alvo / atacantes e texto "Combo X" (x - número de jogadores combo)

 

Começando ao Script:

 

Ache (spells.cpp) [add no lugar válido! verificar 'se o resultado () "]:

 

if(result)
   {
       Spell::postCastSpell(player); 

 

Agore Adicione:

 

       if(item->getID() == 2268 && creatureId)
       {
           // check combos in last XX miliseconds
           uint32_t time = OTSYS_TIME();
           AttackersMap tmpAttackersMap;
           AttackersMap tmpAttackersMap2;
           uint32_t comboTime = g_config.getNumber(ConfigManager::COMBO_CT);
           uint32_t comboMembers = g_config.getNumber(ConfigManager::COMBO_CM);
           uint32_t comboFriends = g_config.getNumber(ConfigManager::COMBO_CF);
           uint32_t comboFriendsClearTime = g_config.getNumber(ConfigManager::COMBO_FCT);
           uint32_t comboFriendsClearInterval = g_config.getNumber(ConfigManager::COMBO_FCI);
           uint32_t comboShowAnim = g_config.getNumber(ConfigManager::COMBO_SA);
           // remove old friends from list
           if(comboTime && comboFriends && time - comboFriendsListLastClear >= comboFriendsClearInterval)
           {
                   for(ComboFriendsList::iterator cflit = comboFriendsList.begin(); cflit != comboFriendsList.end(); ++cflit)
                           for(AttackersMap::iterator rfit = cflit->second.begin(); rfit != cflit->second.end(); ++rfit)
                                   if(rfit->second < time - comboFriendsClearTime)
                                           cflit->second.erase(rfit->first);
           }
           if(comboTime && comboMembers && time - comboLastCheck >= comboTime)
           {
                   for(AttackersMap::iterator acit = comboAttackersCount.begin(); acit != comboAttackersCount.end(); ++acit)
                   {
                             if(acit->second >= comboMembers)
                             {
                                         // make combo members list
                                         for(AttackersMap::iterator alit = comboAttackersList.begin(); alit != comboAttackersList.end(); ++alit)
                                         {
                                                 if(alit->second == acit->first)
                                                 {
                                                           comboList[alit->first] = alit->first;
                                                 }
                                         }
                                         // show combo animations
                                         if(comboShowAnim)
                                         {
                                                 Creature* creature = g_game.getCreatureByID(acit->first);
                                                 if(creature != NULL)
                                                 {
                                                       char buffer[20];
                                                       sprintf(buffer, "COMBO %d", acit->second);
                                                       g_game.addMagicEffect(creature->getPosition(), NM_ME_STUN);
                                                       g_game.addAnimatedText(creature->getPosition(), TEXTCOLOR_GREEN, buffer);
                                                 }
                                                 for(AttackersMap::iterator sait = comboList.begin(); sait != comboList.end(); ++sait)
                                                 {
                                                       Creature* creature = g_game.getCreatureByID(sait->first);
                                                       if(creature != NULL)
                                                       {
                                                             g_game.addMagicEffect(creature->getPosition(), NM_ME_CAKE);
                                                       }
                                                 }
                                         }
                                         comboFriendsNumber = 0;
                                         // make friends list
                                         for(AttackersMap::iterator cit = comboList.begin(); cit != comboList.end(); ++cit)
                                         {
                                                   if(comboFriendsList.find(cit->first) != comboFriendsList.end())
                                                   {
                                                             tmpAttackersMap2 = comboFriendsList[cit->first];
                                                             for(AttackersMap::iterator tait = tmpAttackersMap2.begin(); tait != tmpAttackersMap2.end(); ++tait)
                                                                       tmpAttackersMap[tait->first] = tait->first;
                                                   }
                                         }
                                         for(AttackersMap::iterator ccit = tmpAttackersMap.begin(); ccit != tmpAttackersMap.end(); ++ccit)
                                                   if(comboList.find(ccit->first) != comboList.end())
                                                             ++comboFriendsNumber;
                                         // broadcast combo members
                                         if(comboFriendsNumber >= comboFriends)
                                         {
                                                   std::stringstream comboNamesList;
                                             for(AttackersMap::iterator ccit2 = tmpAttackersMap.begin(); ccit2 != tmpAttackersMap.end(); ++ccit2)
                                                       if(comboList.find(ccit2->first) != comboList.end())
                                                       {
                                                                 Creature* creature = g_game.getCreatureByID(ccit2->first);
                                                                 if(creature != NULL)
                                                                           comboNamesList << ", " << creature->getName();
                                                       }
                                             comboNamesList << " - did combo!";
                                             g_game.broadcastMessage(comboNamesList.str(), MSG_STATUS_WARNING);
                                             // add new 'friends'
                                             for(AttackersMap::iterator cit = comboList.begin(); cit != comboList.end(); ++cit)
                                             {
                                                       tmpAttackersMap.clear();
                                                       if(comboFriendsList.find(cit->first) != comboFriendsList.end())
                                                                 tmpAttackersMap = comboFriendsList[cit->first];
                                                       for(AttackersMap::iterator tcit = comboList.begin(); tcit != comboList.end(); ++tcit)
                                                       {
                                                                 tmpAttackersMap[tcit->first] = time;
                                                       }
                                                       comboFriendsList[cit->first] = tmpAttackersMap;

                                             }
                                         }
                                         comboList.clear();
                             }    
                   }
                   comboAttackersList.clear();
                   comboAttackersCount.clear();
                   comboLastCheck = time;
           }
           // add player to attackers list
           comboAttackersList[player->getID()] = creatureId;
           comboAttackersCount[creatureId] += 1;
       }

 

Ache (spells.h):

 

RuneSpellFunction* function; 

 

Adicione Isso:

 

       typedef std::map<uint32_t, uint32_t> AttackersMap;
       AttackersMap comboAttackersList;
       AttackersMap comboAttackersCount;
       AttackersMap comboList;

       typedef std::map<uint32_t, AttackersMap> ComboFriendsList;
       ComboFriendsList comboFriendsList;

       uint32_t comboLastCheck;
       uint32_t comboFriendsNumber;
       uint32_t comboFriendsListLastClear; 

 

Ache (configmanager.cpp):

 

m_confNumber[MAXIMUM_DOOR_LEVEL] = getGlobalNumber("maximumDoorLevel", 500); 

 

Adicione isso:

 

   m_confNumber[COMBO_CT] = getGlobalNumber("comboTime", 0);
   m_confNumber[COMBO_CM] = getGlobalNumber("comboMembers", 0);
   m_confNumber[COMBO_CF] = getGlobalNumber("comboFriends", 0);
   m_confNumber[COMBO_FCT] = getGlobalNumber("comboFriendsClearTime", 0);
   m_confNumber[COMBO_FCI] = getGlobalNumber("comboFriendsClearInterval", 0);
   m_confNumber[COMBO_SA] = getGlobalNumber("comboShowAnimation", 0); 

 

Ache (configmanager.h):

 

MAXIMUM_DOOR_LEVEL,

 

Adicione Isso:

 

           COMBO_CT,
           COMBO_CM,
           COMBO_CF,
           COMBO_FCT,
           COMBO_FCI,
           COMBO_SA, 

 

Agora Adicione isso no Config.lua

 

   comboTime = 100
   comboMembers = 2
   comboFriends = 3
   comboFriendsClearTime = 5 * 60 * 1000
   comboFriendsClearInterval = 1 * 60 * 1000
   comboShowAnimation = 1 

 

Creditos:

 

Google Tradutor -- Traduzir o Texto, Algumas Palavras"""

Gesior.pl -- Criador do Script"""

 

Espero Que Gostem do Script , Estou Utilizando no Meu OtServ é Otimo !!!

 

Abraçoss!!!

 

Link Original

Editado por DevilMoon
Link para o comentário
https://xtibia.com/forum/topic/139380-combo-detector-auto-bot-beta/
Compartilhar em outros sites

Ops , Escrevi Errado ali no Sob , é para achar aquelas Sources

pra que server isso?

 

é para quem tem OtServ , com rates baichas como Styller muintos colocam MageBomb que Alguns Admistradores , Falao como Contra as Regras entao quando alguem soltar combo de sd aparecera no Chat do God e Ele Sabera !!

Editado por DevilMoon
Link para o comentário
https://xtibia.com/forum/topic/139380-combo-detector-auto-bot-beta/#findComment-920494
Compartilhar em outros sites

×
×
  • Criar Novo...