• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

[7.72] OTHire 0.0.1b - Based in OTServ Trunk (Latest)

@Nottinghster

ok thx <3

And i have next question

How i can change rsa key ? I can block Tibia 772 (Original client ) ? I want to just CUSTOM Client

You can change it in otserv.cpp

Code:
//load RSA key
std::cout << ":: Loading RSA key..." << std::flush;
const char* p("14299623962416399520070177382898895550795403345466153217470516082934737582776038882967213386204600674145392845853859217990626450972452084065728686565928113");
const char* q("7630979195970404721891201847792002125535401292779123937207447574596692788513647179235335529307251350570728407373705564708871762033017096809910315212884101");
const char* d("46730330223584118622160180015036832148732986808519344675210555262940258739805766860224610646919605860206328024326703361630109888417839241959507572247284807035235569619173792292786907845791904955103601652822519121908367187885509270025388641700821735345222087940578381210879116823013776808975766851829020659073");
g_RSA.setKey(p, q, d);
 
@Ezzz is there any important difference between 7.4 and 7.7 beside graphics?
Code:
7.5
Soul system.
Monsters pulled to far from respaw vanish.
Spears can break.
Small Stones, Throwing Knives and Throwing Stars can be reused.

7.55
Spears will break about 3,075% of the time.
Throwing Star will break about 10% of the time.
Throwing Knive will break about 7% of the time.
Small stones will break about 3% of the time.

7.6
Mana regen speed up 4 times. The amount of mana required for spells is adjusted accordingly.
Spells changed from a magic level based requeriment to a level requeriment.
Wand and Rods are introduced.

I guess the stacked parcel block and rope mechanics changed between this time, but I'm not sure.
 
@Ezzz is there any important difference between 7.4 and 7.7 beside graphics?

There were raw packets, no Xtea encryption, not sure about RSA, you will have to disable it and see if you get the login credentials if you don't then it uses RSA, other than that none, but the removal of soul, and looktype is a byte instead of a uint16_t packet data.

Code:
7.5
Soul system.
Monsters pulled to far from respaw vanish.
Spears can break.
Small Stones, Throwing Knives and Throwing Stars can be reused.

7.55
Spears will break about 3,075% of the time.
Throwing Star will break about 10% of the time.
Throwing Knive will break about 7% of the time.
Small stones will break about 3% of the time.

7.6
Mana regen speed up 4 times. The amount of mana required for spells is adjusted accordingly.
Spells changed from a magic level based requeriment to a level requeriment.
Wand and Rods are introduced.

I guess the stacked parcel block and rope mechanics changed between this time, but I'm not sure.

Thanks for this but I'm sure he's talking about protocol.
 
Well, why dont you do it then??

He is a php programmer, I've done so already with my TFS1.0 for Tibia 7.72, you could work from it and add whats missing and fix whats to be done, but I rather use OTHire, the movement is smooth as well, in TFS 1.0 there's delay everytime, you will have to see for yourself, it isn't for Tibia 7.72
 
He is a php programmer, I've done so already with my TFS1.0 for Tibia 7.72, you could work from it and add whats missing and fix whats to be done, but I rather use OTHire, the movement is smooth as well, in TFS 1.0 there's delay everytime, you will have to see for yourself, it isn't for Tibia 7.72

Well, I do most projects cpp, not php, but thanks for the info.
 
Thank you very much! but for example:
Code:
<instant prem="0" name="Ultimate Explosion" words="exevo gran mas vis" lvl="50" maglv="1" mana="800"  enabled="1" script="ultimate explosion.lua">
I have removed the parameter enabled and then I added it back again. The problem is the level requirement, it fails, When the players have the mana they need he can do the magics.
I've seen what you put me is to fix the parameter with percent level in the mana. But I'm not sure. If I apply what you did the parameter level will work properly?
I'm using the latest version of OTHire without edit it.

Another problem is that using the OTClient (https://github.com/edubart/otclient) to play we can use hotkeys in PVP, but I think that can be fixed by making a custom client with custom RSA Key, no?.

@Nottinghster
I have removed the parameter enabled and then I added it back again. The problem is the level requirement, it fails, When the players have the mana they need he can do the magics.
I've seen what you put me is to fix the parameter with percent level in the mana. But I'm not sure. If I apply what you did the parameter level will work properly?
I'm using the latest version of OTHire without edit it.[/QUOTE]

Is the parameter: "lvl". It is giving me a lot of problems.
 
Last edited by a moderator:
Thank you very much! but for example:
Code:
<instant prem="0" name="Ultimate Explosion" words="exevo gran mas vis" lvl="50" maglv="1" mana="800"  enabled="1" script="ultimate explosion.lua">
I have removed the parameter enabled and then I added it back again. The problem is the level requirement, it fails, When the players have the mana they need he can do the magics.
I've seen what you put me is to fix the parameter with percent level in the mana. But I'm not sure. If I apply what you did the parameter level will work properly?
I'm using the latest version of OTHire without edit it.

Another problem is that using the OTClient (https://github.com/edubart/otclient) to play we can use hotkeys in PVP, but I think that can be fixed by making a custom client with custom RSA Key, no?.

@Nottinghster
I have removed the parameter enabled and then I added it back again. The problem is the level requirement, it fails, When the players have the mana they need he can do the magics.
I've seen what you put me is to fix the parameter with percent level in the mana. But I'm not sure. If I apply what you did the parameter level will work properly?
I'm using the latest version of OTHire without edit it.

Is the parameter: "lvl". It is giving me a lot of problems.[/QUOTE]

To make the parameter "lvl" work, check the config.lua and enable this:

Code:
-- Should the level requirements on runes be used [default: false]
use_rune_level_requirements = false

How can you find this ?
Check spells.cpp

Code:
        if(g_config.getNumber(ConfigManager::USE_RUNE_LEVEL_REQUIREMENTS) && player->getLevel() < level){
            player->sendCancelMessage(RET_NOTENOUGHLEVEL);
            g_game.addMagicEffect(player->getPosition(), NM_ME_PUFF);
            return false;
        }
 
Hey, if I have map created with 0.4.480 SimOne Map Editor (on Avesta) , how can I convert it to work with this distro?
Sorry for silly question, but I had long break from all of this.

Answers kindly appreciated.
 
Is the parameter: "lvl". It is giving me a lot of problems.

To make the parameter "lvl" work, check the config.lua and enable this:

Code:
-- Should the level requirements on runes be used [default: false]
use_rune_level_requirements = false

How can you find this ?
Check spells.cpp

Code:
        if(g_config.getNumber(ConfigManager::USE_RUNE_LEVEL_REQUIREMENTS) && player->getLevel() < level){
            player->sendCancelMessage(RET_NOTENOUGHLEVEL);
            g_game.addMagicEffect(player->getPosition(), NM_ME_PUFF);
            return false;
        }
[/QUOTE]
I think my mistake was in my config.lua file. I'll check right away, thank you very much!
 
@Ezzz
@Nottinghster
I found a bug. I have not found the time that happens, but it is the look type of invisible mode. The player with stealth ring and utana vid get bugged with that look type and they cant change the outfit. It happened to a one or two of players.
Anyone could help me fix this problem?
 
Maybe in the savegame the looktype is stored in the character and it stay bugged. It occurs to me XD.
 
@Nottinghster

I change rsa key in otserv.cpp but you can still login in normal 772 client why ?;/

And
you can change this script ?

Code:
local ITEM_RUM_FLASK = 5553
local ITEM_POOL = 2016

local oilLamps = {[2046] = 2044}

local alcoholDrinks = {FLUID_BEER, FLUID_WINE, FLUID_RUM, FLUID_MEAD}
local poisonDrinks = {FLUID_SLIME}

local drunk = createConditionObject(CONDITION_DRUNK)
setConditionParam(drunk, CONDITION_PARAM_TICKS, 60000)

local poison = createConditionObject(CONDITION_POISON)
setConditionParam(poison, CONDITION_PARAM_DELAYED, true) -- Condition will delay the first damage from when it's added
setConditionParam(poison, CONDITION_PARAM_MINVALUE, -50) -- Minimum damage the condition can do at total
setConditionParam(poison, CONDITION_PARAM_MAXVALUE, -120) -- Maximum damage
setConditionParam(poison, CONDITION_PARAM_STARTVALUE, -5) -- The damage the condition will do on the first hit
setConditionParam(poison, CONDITION_PARAM_TICKINTERVAL, 4000) -- Delay between damages
setConditionParam(poison, CONDITION_PARAM_FORCEUPDATE, true) -- Re-update condition when adding it(ie. min/max value)


local lifeFluidCombat = createCombatObject()
setCombatParam(lifeFluidCombat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(lifeFluidCombat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(lifeFluidCombat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(lifeFluidCombat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

function onGetLifeFluidFormulaValues(cid, level, maglevel)
    return 40, 70
end

setCombatCallback(lifeFluidCombat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetLifeFluidFormulaValues")


local exhaust = createConditionObject(CONDITION_EXHAUST_POTION)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, getConfigInfo('minactionexinterval'))




function onUse(cid, item, frompos, item2, topos)
    if(topos.x == 0 and topos.y == 0 and topos.z == 0) then
        item2 = item
        topos = getThingPos(item.uid)
    end

    if(item2.uid == cid) then -- Player is using on himself
        if(item.type == FLUID_NONE) then
            doPlayerSendCancel(cid, "It is empty.")
            return true
        end

        if(hasCondition(cid, CONDITION_EXHAUST_POTION) ) then
            doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
            return true
        end

        if(item.type == FLUID_MANA) then
            if not doPlayerAddMana(cid, math.random(200, 300)) then
                return false
            end
            doCreatureSay(cid, "Aaaah...", TALKTYPE_SAY)
            doSendMagicEffect(topos, CONST_ME_MAGIC_BLUE)
        elseif(item.type == FLUID_LIFE) then
            if not doCombat(cid, lifeFluidCombat, numberToVariant(cid)) then
                return false
            end
            doCreatureSay(cid, "Aaaah...", TALKTYPE_SAY)
            doSendMagicEffect(topos, CONST_ME_MAGIC_BLUE)
        elseif(isInArray(alcoholDrinks, item.type) ) then
            if not doTargetCombatCondition(0, cid, drunk, CONST_ME_NONE) then
                return false
            end
            doCreatureSay(cid, "Aaah...", TALKTYPE_SAY)
        elseif(isInArray(poisonDrinks, item.type) ) then
            if not doTargetCombatCondition(0, cid, poison, CONST_ME_NONE) then
                return false
            end
        else
            doCreatureSay(cid, "Gulp.", TALKTYPE_SAY)
        end
        doAddCondition(cid, exhaust)
        doChangeTypeItem(item.uid, FLUID_NONE)
        return true
    end

    if(isCreature(item2.uid) == false) then
        if(item.type == FLUID_NONE) then
            if(item.itemid == ITEM_RUM_FLASK and isInArray(DISTILLERY, item2.itemid) ) then
                if(item2.actionid == DISTILLERY_FULL) then
                    doSetItemSpecialDescription(item2.uid, '')
                    doSetItemActionId(item2.uid, 0)
                    doChangeTypeItem(item.uid, TYPE_RUM)
                else
                    doPlayerSendCancel(cid, "You have to process the bunch into the distillery to get rum.")
                end
                return true
            end

            if(isItemFluidContainer(item2.itemid) and item2.type ~= FLUID_NONE) then
                doChangeTypeItem(item.uid, item2.type)
                doChangeTypeItem(item2.uid, FLUID_NONE)
                return true
            end

            local fluidSource = getFluidSourceType(item2.itemid)
            if(fluidSource ~= -1) then
                doChangeTypeItem(item.uid, fluidSource)
                return true
            end


            doPlayerSendCancel(cid, "It is empty.")
            return true
        end

        if(item.type == FLUID_OIL and oilLamps[item2.itemid] ~= nil) then
            doTransformItem(item2.uid, oilLamps[item2.itemid])
            doChangeTypeItem(item.uid, FLUID_NONE)
            return true
        end

        if(hasProperty(item2.uid, CONST_PROP_BLOCKSOLID) ) then
            return false
        end
    end

    if(topos.x == CONTAINER_POSITION) then
        topos = getThingPos(cid)
    end

    local splash = doCreateItem(ITEM_POOL, item.type, topos)
    doDecayItem(splash)

    doChangeTypeItem(item.uid, FLUID_NONE)
    return true
end
 
Back
Top