• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Monster Level (TFS Y OTX)

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Sistema] Monster Level (TFS Y OTX) el Vie Jul 27, 2018 9:40 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    hola usuarios de tibiaface


    bueno aqui les traigo el level monster compatible para The Forgotten Server 0.4_SVN r3777

    nos vamos a las sources y buscamos

    monsters.h


    buscamos

    Código:
    bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,
       isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

    reemplazamos


    aqui no es remplazar por remplazar aqui solo se añade esta tag hideLevel

    Código:
    bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,
       isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, hideLevel;

    buscamos

    Código:
    int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction,
       maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities,
       lightLevel, lightColor, changeTargetSpeed, changeTargetChance;

    y reemplazamos

    aqui igual no se reemplaza por reemplzas aqui solo se añade dos tag levelMin, levelMax

    Código:
    int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction,
       maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities,
       lightLevel, lightColor, changeTargetSpeed, changeTargetChance, levelMin, levelMax;

    monsters.cpp

    buscamos


    Código:
    canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false;

    y reemplazamos

    aqui tambien no es reemplzar por reemplazar  aqui se añade una tag hideLevel

    Código:
    canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = hideLevel = false;

    buscamos

    Código:
    baseSpeed = 200;

    y agregamos

    Código:
    levelMin = levelMax = 1;

    buscamos

    Código:
    bool Monsters::loadMonster

    dentro de aquella funcion encontramos

    Código:
    for(xmlNodePtr p = root->children; p; p = p->next)
       {
          if(p->type != XML_ELEMENT_NODE)
             continue;

          if(!xmlStrcmp(p->name, (const xmlChar*)"health"))
          {
             if(!readXMLInteger(p, "max", intValue))
             {
                SHOW_XML_ERROR("Missing health.max");
                monsterLoad = false;
                break;
             }

             mType->healthMax = intValue;
             if(!readXMLInteger(p, "now", intValue))
                mType->health = mType->healthMax;
             else
                mType->health = intValue;
          }

    debajo agregamos

    Código:
    else if(!xmlStrcmp(p->name, (const xmlChar*)"level"))
            {
                if(!readXMLInteger(p, "max", intValue))
                    mType->levelMax = 1;
                else
                    mType->levelMax = intValue;

                if(!readXMLInteger(p, "min", intValue))
                    mType->levelMin = mType->levelMax;
                else
                    mType->levelMin = intValue;
            }

    buscamos

    Código:
    if(readXMLString(tmpNode, "emblem", strValue))
       mType->guildEmblem = getEmblems(strValue);

    agregamos

    Código:
    if(readXMLString(tmpNode, "hidelevel", strValue))
            mType->hideLevel = booleanString(strValue);

    monster.h

    buscamos

    Código:
    class Monster : public Creature
    {

    y luego abajo de esto

    Código:
    public:
    #ifdef __ENABLE_SERVER_DIAGNOSTIC__
          static uint32_t monsterCount;
    #endif
          virtual ~Monster();

    agregamos

    Código:
    std::string name, nameDescription;
    int32_t level;
    double bonusAttack, bonusDefense;

    buscamos


    Código:
    virtual const std::string& getName() const {return mType->name;}
    virtual const std::string& getNameDescription() const {return mType->nameDescription;}
    virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";}

    y reemplazamos

    Código:
    virtual const std::string& getName() const {return name;}
    virtual const std::string& getNameDescription() const {return nameDescription;}
    virtual std::string getDescription(int32_t) const {return nameDescription + ".";}

    monster.cpp


    buscamos

    Código:
    Monster::Monster(MonsterType* _mType):

    y abajo de esto

    Código:
    isIdle = true;

    pegamos esto

    Código:
    name = _mType->name;
    nameDescription = _mType->nameDescription;
    level = (int32_t)random_range(_mType->levelMin, _mType->levelMax, DISTRO_NORMAL);
    bonusAttack = 1.0;
    bonusDefense = 1.0;

    buscamos

    Código:
    Monster::onCreatureAppear

    y reemplazamos toda la funcion

    Código:
    void Monster::onCreatureAppear(const Creature* creature)
    {
       Creature::onCreatureAppear(creature);
       if(creature == this)
       {
          //We just spawned lets look around to see who is there.
          if(isSummon())
          {
                std::string value;
                this->master->getStorage((std::string)"monster_level", value);

                uint8_t intValue = atoi(value.c_str());
                if(intValue || value == "0")
                    level = intValue;
                else
                    level = 1;
             isMasterInRange = canSee(master->getPosition());
          }

            if(g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL))
            {
                this->healthMax = std::floor(this->getMaxHealth() * (1. + (0.1 * (level - 1))));
                this->health = this->healthMax;

                this->bonusAttack += (0.01 * (level - 1));
                this->bonusDefense += (0.005 * (level - 1));
            }



          updateTargetList();
          updateIdleStatus();
       }
       else
          onCreatureEnter(const_cast<Creature*>(creature));
    }

    buscamos

    Código:
    g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE)

    reemplazamos

    Código:
    g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) * bonusDefense

    buscamos

    Código:
    g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK)

    reemplazamos

    Código:
    g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) * bonusAttack

    map.cpp

    buscamos

    Código:
    #include "game.h"

    agregamos

    Código:
    #include "configmanager.h"

    buscamos

    Código:
    extern Game g_game;

    agregamos

    Código:
    extern ConfigManager g_config;

    buscamos


    Código:
    bool Map::placeCreature
    {

    y despues de eso agregamos

    Código:
    Monster* monster = creature->getMonster();
        if(monster && g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL))
        {
            uint8_t level;
            if(!monster->getMonsterType()->hideLevel)
            {
                if(monster->isSummon())
                {
                    std::string value;
                    monster->getMaster()->getStorage((std::string)"monster_level", value);

                    uint8_t intValue = atoi(value.c_str());
                    if(intValue || value == "0")
                        level = intValue;
                    else
                        level = 1;
                }
                else
                    level = monster->level;

                char buffer [10];
                monster->name = monster->getName() + " [" + itoa(level, buffer, 10) + "]";
            }
        }

    configmanager.h

    buscamos

    Código:
    MONSTER_SPAWN_WALKBACK,

    y agregamos

    Código:
    MONSTER_HAS_LEVEL,

    configmanager.cpp

    buscamos

    Código:
    m_loaded = true;

    y agregamos

    Código:
    m_confBool[MONSTER_HAS_LEVEL] = getGlobalBool("monsterHasLevel", true);

    en config.lua agregamos


    Código:
    monsterHasLevel = true

    Son muchas modificaciones para hacer, pero el resultado está garantizado y es una funcionalidad más para su servidor.

    Como está programado, a cada nivel, monstruos ganan el 10% de HP, el 1% de daño y el 0.5% de defensa.



    Para configurar nivel mínimo y máximo, sólo se agrega en el XML del monstruo:

    <level min="1" max="10"/>


    y eso es todo



    Última edición por [Admin] God Maya el Miér Oct 10, 2018 9:29 am, editado 2 veces



    Ver perfil de usuario http://www.tibiaface.com

    2default Re: [Sistema] Monster Level (TFS Y OTX) el Miér Oct 10, 2018 7:50 am

    Deget92

    avatar
    Miembro
    Miembro
    Hola, Hay un error durante la compilación
    [Tienes que estar registrado y conectado para ver este vínculo]

    Ver perfil de usuario

    3default Re: [Sistema] Monster Level (TFS Y OTX) el Miér Oct 10, 2018 9:13 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Hola, Hay un error durante la compilación
    [Tienes que estar registrado y conectado para ver este vínculo]

    me muestra un captura de su consola y version y distribucion



    Ver perfil de usuario http://www.tibiaface.com

    4default Re: [Sistema] Monster Level (TFS Y OTX) el Miér Oct 10, 2018 9:26 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    dejo aqui ya un tfs con los cambios realizados [Tienes que estar registrado y conectado para ver este vínculo]


    [Tienes que estar registrado y conectado para ver este vínculo]



    Ver perfil de usuario http://www.tibiaface.com

    5default Re: [Sistema] Monster Level (TFS Y OTX) el Miér Oct 10, 2018 12:32 pm

    Deget92

    avatar
    Miembro
    Miembro
    map.cpp:205:79: error: ‘itoa’ was not declared in this scope

    Ver perfil de usuario

    6default Re: [Sistema] Monster Level (TFS Y OTX) el Miér Oct 10, 2018 12:33 pm

    Deget92

    avatar
    Miembro
    Miembro
    Tengo linux

    Ver perfil de usuario

    7default Re: [Sistema] Monster Level (TFS Y OTX) el Miér Oct 10, 2018 12:56 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    hideLevel


    aqui puede ver la modificaciond e cada linea en cada cpp y en cada h que se a realizado y compare en cual ha fallado

    [Tienes que estar registrado y conectado para ver este vínculo]



    Ver perfil de usuario http://www.tibiaface.com

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).