• 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!

OTClient Wrong position after offline training

nowitsky

Member
Joined
Jun 26, 2016
Messages
88
Solutions
2
Reaction score
13
Hello.
How can i set a teleport position after offline training?
Beacuse after training i have every characters in wrong position in temple.

Maybe problem is where characters need to be after server shutdown.
How can i check it?
 
You'd have to post your offline training script I guess.
 
You'd have to post your offline training script I guess.


Lua:
function onLogin(player)
    local lastLogout = player:getLastLogout()
    local offlineTime = lastLogout ~= 0 and math.min(os.time() - lastLogout, 86400 * 21) or 0
    local offlineTrainingSkill = player:getOfflineTrainingSkill()
    if offlineTrainingSkill == -1 then
        player:addOfflineTrainingTime(offlineTime * 1000)
        return true
    end

    player:setOfflineTrainingSkill(-1)

    if offlineTime < 600 then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be logged out for more than 10 minutes to start offline training.")
        return true
    end

    local trainingTime = math.max(0, math.min(offlineTime, math.min(43200, player:getOfflineTrainingTime() / 1000)))
    player:removeOfflineTrainingTime(trainingTime * 1000)

    local remainder = offlineTime - trainingTime
    if remainder > 0 then
        player:addOfflineTrainingTime(remainder * 1000)
    end

    if trainingTime < 60 then
        return true
    end

    local text = "During your absence you trained for"
    local hours = math.floor(trainingTime / 3600)
    if hours > 1 then
        text = string.format("%s %d hours", text, hours)
    elseif hours == 1 then
        text = string.format("%s 1 hour", text)
    end

    local minutes = math.floor((trainingTime % 3600) / 60)
    if minutes ~= 0 then
        if hours ~= 0 then
            text = string.format("%s and", text)
        end

        if minutes > 1 then
            text = string.format("%s %d minutes", text, minutes)
        else
            text = string.format("%s 1 minute", text)
        end
    end

    text = string.format("%s.", text)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, text)

    local vocation = player:getVocation()
    local promotion = vocation:getPromotion()
    local topVocation = not promotion and vocation or promotion

    local updateSkills = false
    if table.contains({SKILL_CLUB, SKILL_SWORD, SKILL_AXE, SKILL_DISTANCE}, offlineTrainingSkill) then
        local modifier = topVocation:getAttackSpeed() / 1000
        updateSkills = player:addOfflineTrainingTries(offlineTrainingSkill, (trainingTime / modifier) / (offlineTrainingSkill == SKILL_DISTANCE and 4 or 2))
    elseif offlineTrainingSkill == SKILL_MAGLEVEL then
        local gainTicks = topVocation:getManaGainTicks() * 2
        if gainTicks == 0 then
            gainTicks = 1
        end

        updateSkills = player:addOfflineTrainingTries(SKILL_MAGLEVEL, trainingTime * (vocation:getManaGainAmount() / gainTicks))
    end

    if updateSkills then
        player:addOfflineTrainingTries(SKILL_SHIELD, trainingTime / 4)
    end

    return true
end
 
Beacuse after training i have every characters in wrong position in temple.
Nothing in this script logs out the player or teleports them.
There must be another script that triggers the logout phase. Actionscript, perhaps?

And just to be clear about the issue..
Are the players logging in at the temple, and you want to stop that?
Or are the players logging in somewhere else, and you want them to be at the temple instead?
 
Back
Top