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

Problem with login.lua

Gamesert13

New Member
Joined
Sep 18, 2019
Messages
15
Reaction score
0
Give as much information as possible -- This is not Support section.
Hey i have someone problem with login.lua i think.
If im start server is okey for 1-3h after this is dont work this slot for bp i can ony put her bag... if im put to this login other login and restart server it's work but after x h is this problem with backpack ;/
This "bug" login.lua
Code:
function Player.sendTibiaTime(self, hours, minutes)
    local msg = NetworkMessage()
    msg:addByte(0xEF)
    msg:addByte(hours)
    msg:addByte(minutes)
    msg:sendToPlayer(self)
    msg:delete()
    return true
end

local function onMovementRemoveProtection(cid, oldPosition, time)
    local player = Player(cid)
    if not player then
        return true
    end

    local playerPosition = player:getPosition()
    if (playerPosition.x ~= oldPosition.x or playerPosition.y ~= oldPosition.y or playerPosition.z ~= oldPosition.z) or player:getTarget() then
        player:setStorageValue(Storage.combatProtectionStorage, 0)
        return true
    end

    addEvent(onMovementRemoveProtection, 1000, cid, oldPosition, time - 1)
end

function onLogin(player)
    local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!'
    if player:getLastLoginSaved() <= 0 then
        loginStr = loginStr .. ' Please choose your outfit.'
        player:sendOutfitWindow()
        player:setBankBalance(0)
    else
        if loginStr ~= "" then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
        end

        loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved()))
    end

    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)

    local playerId = player:getId()

    DailyReward.init(playerId)

    player:loadSpecialStorage()

    --[[-- Maintenance mode
    if (player:getGroup():getId() < 2) then
        return false
    else

    end--]]

    if (player:getGroup():getId() >= 4) then
        player:setGhostMode(true)
    end

    -- Stamina
    nextUseStaminaTime[playerId] = 1

    -- EXP Stamina
    nextUseXpStamina[playerId] = 1

    -- New Prey
    nextPreyTime[playerId] = {
        [CONST_PREY_SLOT_FIRST] = 1,
        [CONST_PREY_SLOT_SECOND] = 1,
        [CONST_PREY_SLOT_THIRD] = 1
    }

    if (player:getAccountType() == ACCOUNT_TYPE_TUTOR) then
        local msg = [[:: Tutor Rules
            1 *> 3 Warnings you lose the job.
            2 *> Without parallel conversations with players in Help, if the player starts offending, you simply mute it.
            3 *> Be educated with the players in Help and especially in the Private, try to help as much as possible.
            4 *> Always be on time, if you do not have a justification you will be removed from the staff.
            5 *> Help is only allowed to ask questions related to tibia.
            6 *> It is not allowed to divulge time up or to help in quest.
            7 *> You are not allowed to sell items in the Help.
            8 *> If the player encounters a bug, ask to go to the website to send a ticket and explain in detail.
            9 *> Always keep the Tutors Chat open. (required).
            10 *> You have finished your schedule, you have no tutor online, you communicate with some CM in-game or ts and stay in the help until someone logs in, if you can.
            11 *> Always keep a good Portuguese in the Help, we want tutors who support, not that they speak a satanic ritual.
            12 *> If you see a tutor doing something that violates the rules, take a print and send it to your superiors. "
            - Commands -
            Mute Player: / mute nick, 90. (90 seconds)
            Unmute Player: / unmute nick.
            - Commands -]]
        player:popupFYI(msg)
    end

     -- OPEN CHANNELS
    if table.contains({"Rookgaard", "Dawnport"}, player:getTown():getName())then
        player:openChannel(3) -- world chat
        player:openChannel(6) -- advertsing rook main
    else
        player:openChannel(3) -- world chat
        player:openChannel(5) -- advertsing main
    end

    -- Rewards
    local rewards = #player:getRewardList()
    if(rewards > 0) then
        player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward"))
    end

    -- Update player id
    local stats = player:inBossFight()
    if stats then
        stats.playerId = player:getId()
    end

     if player:getStorageValue(Storage.combatProtectionStorage) < 1 then
        player:setStorageValue(Storage.combatProtectionStorage, 1)
        onMovementRemoveProtection(playerId, player:getPosition(), 10)
    end

    -- Set Client XP Gain Rate
    if Game.getStorageValue(GlobalStorage.XpDisplayMode) > 0 then
        displayRate = Game.getExperienceStage(player:getLevel())
        else
        displayRate = 1
    end
    local staminaMinutes = player:getStamina()
    local storeBoost = player:getExpBoostStamina()
    player:setStoreXpBoost(storeBoost > 0 and 50 or 0)
    if staminaMinutes > 2400 and player:isPremium() and storeBoost > 0 then
        player:setBaseXpGain(displayRate*2*100) -- Premium + Stamina boost + Store boost
        player:setStaminaXpBoost(150)
    elseif staminaMinutes > 2400 and player:isPremium() and storeBoost <= 0 then
        player:setBaseXpGain(displayRate*1.5*100) -- Premium + Stamina boost
        player:setStaminaXpBoost(150)
    elseif staminaMinutes <= 2400 and staminaMinutes > 840 and player:isPremium() and storeBoost > 0 then
        player:setBaseXpGain(displayRate*1.5*100) -- Premium + Store boost
        player:setStaminaXpBoost(100)
    elseif staminaMinutes > 840 and storeBoost > 0 then
        player:setBaseXpGain(displayRate*1.5*100) -- FACC + Store boost
        player:setStaminaXpBoost(100)
    elseif staminaMinutes <= 840 and storeBoost > 0 then
        player:setBaseXpGain(displayRate*1*100) -- ALL players low stamina + Store boost
        player:setStaminaXpBoost(50)
    elseif staminaMinutes <= 840 then
        player:setBaseXpGain(displayRate*0.5*100) -- ALL players low stamina
        player:setStaminaXpBoost(50)
    end

    if player:getClient().version > 1110 then
        local worldTime = getWorldTime()
        local hours = math.floor(worldTime / 60)
        local minutes = worldTime % 60
        player:sendTibiaTime(hours, minutes)
    end
    
    if player:getStorageValue(Storage.isTraining) == 1 then -- redefinir storage de exercise weapon
        player:setStorageValue(Storage.isTraining,0)
    end
    return true
end
and this what im put if this is "buged"
Code:
function Player.sendTibiaTime(self, hours, minutes)
    local msg = NetworkMessage()
    msg:addByte(0xEF)
    msg:addByte(hours)
    msg:addByte(minutes)
    msg:sendToPlayer(self)
    msg:delete()
    return true
end

local function onMovementRemoveProtection(cid, oldPosition, time)
    local player = Player(cid)
    if not player then
        return true
    end

    local playerPosition = player:getPosition()
    if (playerPosition.x ~= oldPosition.x or playerPosition.y ~= oldPosition.y or playerPosition.z ~= oldPosition.z) or player:getTarget() then
        player:setStorageValue(Storage.combatProtectionStorage, 0)
        return true
    end

    addEvent(onMovementRemoveProtection, 1000, cid, oldPosition, time - 1)
end

function onLogin(player)
    local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!'
    if player:getLastLoginSaved() <= 0 then
        loginStr = loginStr .. ' Please choose your outfit.'
        player:sendOutfitWindow()
        player:setBankBalance(0)
    else
        if loginStr ~= "" then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
        end

        loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved()))
    end

    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)

    local playerId = player:getId()

    DailyReward.init(playerId)

    player:loadSpecialStorage()

    --[[-- Maintenance mode
    if (player:getGroup():getId() < 2) then
        return false
    else

    end--]]

    if (player:getGroup():getId() >= 4) then
        player:setGhostMode(true)
    end

    -- Stamina
    nextUseStaminaTime[playerId] = 1

    -- EXP Stamina
    nextUseXpStamina[playerId] = 1

    -- New Prey
    nextPreyTime[playerId] = {
        [CONST_PREY_SLOT_FIRST] = 1,
        [CONST_PREY_SLOT_SECOND] = 1,
        [CONST_PREY_SLOT_THIRD] = 1
    }

    if (player:getAccountType() == ACCOUNT_TYPE_TUTOR) then
        local msg = [[:: Tutor Rules
            1 *> 3 Warnings you lose the job.
            2 *> Without parallel conversations with players in Help, if the player starts offending, you simply mute it.
            3 *> Be educated with the players in Help and especially in the Private, try to help as much as possible.
            4 *> Always be on time, if you do not have a justification you will be removed from the staff.
            5 *> Help is only allowed to ask questions related to tibia.
            6 *> It is not allowed to divulge time up or to help in quest.
            7 *> You are not allowed to sell items in the Help.
            8 *> If the player encounters a bug, ask to go to the website to send a ticket and explain in detail.
            9 *> Always keep the Tutors Chat open. (required).
            10 *> You have finished your schedule, you have no tutor online, you communicate with some CM in-game or ts and stay in the help until someone logs in, if you can.
            11 *> Always keep a good Portuguese in the Help, we want tutors who support, not that they speak a satanic ritual.
            12 *> If you see a tutor doing something that violates the rules, take a print and send it to your superiors. "
            - Commands -
            Mute Player: / mute nick, 90. (90 seconds)
            Unmute Player: / unmute nick.
            - Commands -]]
        player:popupFYI(msg)
    end

     -- OPEN CHANNELS
    if table.contains({"Rookgaard", "Dawnport"}, player:getTown():getName())then
        player:openChannel(3) -- world chat
        player:openChannel(6) -- advertsing rook main
    else
        player:openChannel(3) -- world chat
        player:openChannel(5) -- advertsing main
    end

    -- Rewards
    local rewards = #player:getRewardList()
    if(rewards > 0) then
        player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward"))
    end

    -- Update player id
    local stats = player:inBossFight()
    if stats then
        stats.playerId = player:getId()
    end

     if player:getStorageValue(Storage.combatProtectionStorage) < 1 then
        player:setStorageValue(Storage.combatProtectionStorage, 1)
        onMovementRemoveProtection(playerId, player:getPosition(), 10)
    end

    -- Set Client XP Gain Rate
    if Game.getStorageValue(GlobalStorage.XpDisplayMode) > 0 then
        displayRate = Game.getExperienceStage(player:getLevel())
        else
        displayRate = 1
    end
    local staminaMinutes = player:getStamina()
    local storeBoost = player:getExpBoostStamina()
    player:setStoreXpBoost(storeBoost > 0 and 50 or 0)
    if staminaMinutes > 2400 and player:isPremium() and storeBoost > 0 then
        player:setBaseXpGain(displayRate*2*100) -- Premium + Stamina boost + Store boost
        player:setStaminaXpBoost(150)
    elseif staminaMinutes > 2400 and player:isPremium() and storeBoost <= 0 then
        player:setBaseXpGain(displayRate*1.5*100) -- Premium + Stamina boost
        player:setStaminaXpBoost(150)
    elseif staminaMinutes <= 2400 and staminaMinutes > 840 and player:isPremium() and storeBoost > 0 then
        player:setBaseXpGain(displayRate*1.5*100) -- Premium + Store boost
        player:setStaminaXpBoost(100)
    elseif staminaMinutes > 840 and storeBoost > 0 then
        player:setBaseXpGain(displayRate*1.5*100) -- FACC + Store boost
        player:setStaminaXpBoost(100)
    elseif staminaMinutes <= 840 and storeBoost > 0 then
        player:setBaseXpGain(displayRate*1*100) -- ALL players low stamina + Store boost
        player:setStaminaXpBoost(50)
    elseif staminaMinutes <= 840 then
        player:setBaseXpGain(displayRate*0.5*100) -- ALL players low stamina
        player:setStaminaXpBoost(50)
    end

    if player:getClient().version > 1110 then
        local worldTime = getWorldTime()
        local hours = math.floor(worldTime / 60)
        local minutes = worldTime % 60
        player:sendTibiaTime(hours, minutes)
    end
    
    if player:getStorageValue(Storage.isTraining) == 1 then -- redefinir storage de exercise weapon
        player:setStorageValue(Storage.isTraining,0)
    end
    return true
end
 
TFS version? You can move backpack to other places like depot? throw on ground?
Read Support Board rules before posting a thread and Get to know the difference between a Request thread and a Support thread.

(please try to write better English I am not sure if I understand you completely)
 
The two login.lua files are identical looks like this isn't related to login.lua
You added new sprites? Edited items.otb lately? Copied data-pack from other server to your server?
 
Try using the old items.otb without your custom edits and check if backpack still bugged or not.
 
okey im check this

ahh and i have other question how i can add to items exampel boots of waterwalking hp/mp regen?
Code:
    <item id="2358" name="boots of waterwalking">
        <attribute key="weight" value="770" />
        <attribute key="slotType" value="feet" />
        <attribute key="speed" value="60" />
        <attribute key="healthGain" value="30" />
        <attribute key="healthTicks" value="1000" />
        <attribute key="manaGain" value="120" />
        <attribute key="manaTicks" value="1000" />
I make this but is don't work
 
You need to add it to data\movements\movements.xml like this
XML:
    <movevent event="Equip" itemid="2358" slot="feet" function="onEquipItem" />
    <movevent event="DeEquip" itemid="2358" slot="feet" function="onDeEquipItem" />
 
You have in your data\items\items.xml in your backpacks
XML:
<attribute key="transformEquipTo"
or
XML:
<attribute key="decayTo"
or in your data\actions\scripts any decayto script related to backpacks? transforms?
Was the backpack like this always? or it started happening lately? Which server are using? I think you copied some datapack or downgraded items.otb but that can't be related to your login.lua
 
Back
Top