OTHispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Ir abajo
Falcon
Falcon
Administrador
Mensajes Mensajes : 350
http://www.othispano.net

[C++] Anti-Push bot Empty [C++] Anti-Push bot

Miér Mayo 16, 2012 10:02 pm
Código:
Esto Fue Hecho 100% Por Xampy De Otland.net
Hola!
Estoy haciendo esto en una solicitud de kito2 Funciona con TFS 0.4.| No se ha probado con TFS 0.3.x ni 0.2.X!

¿Que Es Esto?
Detecta si se está moviendo un objeto / objeto con un identificador que se encuentra en config.lua (configurable), entonces se añade un agotamiento de los X ms
(configurable). Si intenta mover un "anti-push item" (sé cómo llamarlo), entonces se dirá un mensaje de error si está agotado. Básicamente lo que hace es hacer que no funciona Anti-Push característica de bot.
Se ha añadido por defecto los siguientes items:

- 2148 (Gold Coin)
- 2152 (Platinum Coin)
- 2160 (Crystal Coin)
- 3976 (Worms)

Seguramente nadie va a tirar monedas de cristal, mientras que el empuje anti-está trabajando, pero se ha añadido por defecto, puede eliminarlo si lo desea, o añadir otros elementos, como usted prefiera.

Ok Empezemos:
Vamos a la linea 1440~ de game.cpp y remplaza esto:
Código:
        ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL);
        if(ret == RET_NOERROR)
                return true;

        player->sendCancelMessage(ret);
        return false; 
Por Esto:
Código:
// Anti-Push feature Prevention System by Xampy //
    if(g_config.getBool(ConfigManager::ANTI_PUSH))
    {
        int16_t indexItem = toIndex;
        std::string antiPushItems = g_config.getString(ConfigManager::ANTI_PUSH_ITEMS);
        if(antiPushItems.size())
        {
            IntegerVec tmpVec = vectorAtoi(explodeString(antiPushItems, ","));
            if(tmpVec[0] != 0)
            {                   
                int i;
                int arraySize = tmpVec.size();
                i = 0;
                for(IntegerVec::iterator it = tmpVec.begin(); it != tmpVec.end(); ++it)
                {
                    i++;
                    if(item->getID() == uint32_t(*it) && indexItem < 1 && mapFromPos == mapToPos)
                    {
                        if(player->hasCondition(CONDITION_EXHAUST, EXHAUST_MOVE_ITEMS))
                        {
                            player->sendTextMessage(MSG_INFO_DESCR, "You cannot move this object.\nAnti-Push prevention.");
                            return false;
                        }
                        else
                        {
                            ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL);
                            if(ret == RET_NOERROR)
                            {
                                int32_t ticks = g_config.getNumber(ConfigManager::ANTI_PUSH_DELAY);
                                player->addExhaust(ticks, EXHAUST_MOVE_ITEMS);
                                return true;
                            } 
                            player->sendCancelMessage(ret);
                            return false;
                        }
                    }
                    else
                    {
                        if(arraySize == i)
                        {
                            ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL);
                            if(ret == RET_NOERROR)
                                return true;
                            player->sendCancelMessage(ret);
                            return false;
                        }
                    }
                }
            }
        }
      }
      else
      {
        ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL);
        if(ret == RET_NOERROR)
            return true; 
        player->sendCancelMessage(ret);
        return false;
    }

    return false;
// Anti-Push feature Prevention System by Xampy // 
Ahora abrimos player.h y remplazamos esto:
Código:
enum Exhaust_t
{
    EXHAUST_COMBAT = 1,
    EXHAUST_HEALING = 2
}; 
Por esto:
Código:
enum Exhaust_t
{
    EXHAUST_COMBAT = 1,
    EXHAUST_HEALING = 2,
    EXHAUST_MOVE_ITEMS = 3
}; 
Ahora abrimos configmanager.cpp y despues de esto:
Código:
m_confBool[ADDONS_PREMIUM] = getGlobalBool("addonsOnlyPremium", true); 
Pegamos esto:
Código:
    m_confBool[ANTI_PUSH] = getGlobalBool("useAntiPush", true);
    m_confNumber[ANTI_PUSH_DELAY] = getGlobalNumber("antiPushDelay", 3000);
    m_confString[ANTI_PUSH_ITEMS] = getGlobalString("antiPushItems", "");
Por ultimo, abrimos configmanager.h y luego de esto:
Código:
ADDONS_PREMIUM, 
Ponemos esto:
Código:
ANTI_PUSH, 
2)Luego de esto:
Código:
STAMINA_DESTROY_LOOT, 
Pegamos esto:
Código:
ANTI_PUSH_DELAY,
3)Luego de esto:
Código:
ADMIN_ENCRYPTION_DATA,
Ponemos esto:
Código:
ANTI_PUSH_ITEMS,

Ahora Copilen Su Server (; y pegamos esto en config.lua
Código:
-- Anti-Push Prevention System by Xampy
useAntiPush = true --// enabled = true or disabled = false
antiPushDelay = 3000 --// default is 3000 (3 seconds)
antiPushItems = "2148,2152,2160,3976" --// add as much items as you want separated by comma 
Ahora ejecuta tu server y ya esta!
Este sistema está activado por defecto con 3000 ms de agotamiento.
Se ha probado, y no se han encontrado errores. Si usted piensa que algo no está funcionando correctamente, pida ayuda en este tema.

Creditos;
Código:

- Xampy
- 3lite
avatar
Masakre
Miembro
Mensajes Mensajes : 36

[C++] Anti-Push bot Empty Re: [C++] Anti-Push bot

Dom Ago 05, 2012 9:35 pm
Muy interesante.
Una pregunta . . .
¿LUA es sólo usado para servidores Open Tibia? ¿Qué otras utilidades tiene?
Volver arriba
Permisos de este foro:
No puedes responder a temas en este foro.