• 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) Vie Jul 27, 2018 9:40 pm

    [Admin] God Maya

    [Admin] God Maya
    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



    [Sistema] Monster Level (TFS Y OTX) YNU5B25
    https://www.tibiaface.com

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

    Deget92

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

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

    [Admin] God Maya

    [Admin] God Maya
    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



    [Sistema] Monster Level (TFS Y OTX) YNU5B25
    https://www.tibiaface.com

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

    [Admin] God Maya

    [Admin] God Maya
    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]



    [Sistema] Monster Level (TFS Y OTX) YNU5B25
    https://www.tibiaface.com

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

    Deget92

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

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

    Deget92

    Deget92
    Miembro
    Miembro
    Tengo linux

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

    [Admin] God Maya

    [Admin] God Maya
    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]



    [Sistema] Monster Level (TFS Y OTX) YNU5B25
    https://www.tibiaface.com

    8default Re: [Sistema] Monster Level (TFS Y OTX) Lun Ago 19, 2019 1:52 am

    gzdiaz20

    gzdiaz20
    Miembro
    Miembro
    no tienes un tuto para tfs 1.3

    9default Re: [Sistema] Monster Level (TFS Y OTX) Lun Ago 19, 2019 8:01 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:no tienes un tuto para tfs 1.3

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



    [Sistema] Monster Level (TFS Y OTX) YNU5B25
    https://www.tibiaface.com

    10default Re: [Sistema] Monster Level (TFS Y OTX) Jue Ene 09, 2020 3:42 pm

    Raken

    Raken
    Nuevo Miembro
    Nuevo Miembro
    Maya con que compilaste esto
    trunk.r3777 monster level

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

    11default Re: [Sistema] Monster Level (TFS Y OTX) Vie Ene 10, 2020 2:32 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Maya con que compilaste esto
    trunk.r3777 monster level

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

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



    [Sistema] Monster Level (TFS Y OTX) YNU5B25
    https://www.tibiaface.com

    12default Re: [Sistema] Monster Level (TFS Y OTX) Jue Ago 20, 2020 9:40 pm

    elnelson

    elnelson
    Nuevo Miembro
    Nuevo Miembro
    Hola, que tal. Pude compilar y todo bien sin errores, pero hay un grave detalle.

    El nivel del monstruo no afecta en nada las estadísticas del mosntruo (asi es, puede ser nivel 1000 y es igual solo tiene el numero 1000)

    Estoy usando la misma distro que tu (TFS 0.4 3777)

    podrias apoyarme en eso profavor?

    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).