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

TFS 1.X+ Login.lua Checking for vocation before determine where to teleport player when premium ends.

froy

Active Member
Joined
Sep 30, 2009
Messages
151
Solutions
3
Reaction score
36
Hey!
I'm using Nostalrius 7.72 TFS 1.2 and noticed while testing some stuff that upon loosing premium as vocation 0
you'd get teleported to thais..

Code looks like this:
Code:
    -- Premium system
    if player:isPremium() then
        player:setStorageValue(43434, 1)
    elseif player:getStorageValue(43434) == 1 then
        player:setStorageValue(43434, 0)
        player:teleportTo({x = 32369, y = 32241, z = 7})
        player:setTown(Town("Thais"))
    end

Somewhere I'd like to add

Code:
player:getVocation():getId() > 1
player:teleportTo({x = 32097, y = 32219, z = 7})
player:setTown(Town("Rookgaard"))

I've tried setting it up but ends up giving me no errors at all and still teleports no vocation players to thais..
Any help is very much appreciated!
 
Solution
change rookTownId and thaisTownId for correct townId in your server.

Lua:
    -- Premium system
    local rookTownId = 1
    local thaisTownId = 2

    if player:isPremium() and player:getStorageValue(43434) ~= 1 then
        player:setStorageValue(43434, 1)
    elseif not player:isPremium() and player:getStorageValue(43434) == 1 then
        if player:getVocation():getId() == 0 then
            player:setTown(Town(rookTownId))
        else
            player:setTown(Town(thaisTownId))
        end
        player:sendTextMessage(22, "premium account endded")
        player:setStorageValue(43434, -1)        
        player:teleportTo(player:getTown():getTemplePosition())
    end
change rookTownId and thaisTownId for correct townId in your server.

Lua:
    -- Premium system
    local rookTownId = 1
    local thaisTownId = 2

    if player:isPremium() and player:getStorageValue(43434) ~= 1 then
        player:setStorageValue(43434, 1)
    elseif not player:isPremium() and player:getStorageValue(43434) == 1 then
        if player:getVocation():getId() == 0 then
            player:setTown(Town(rookTownId))
        else
            player:setTown(Town(thaisTownId))
        end
        player:sendTextMessage(22, "premium account endded")
        player:setStorageValue(43434, -1)        
        player:teleportTo(player:getTown():getTemplePosition())
    end
 
Last edited:
Solution
Code:
local rookTownId = 1 --Town id in map editor
    local rookpos = {x = 1000, y = 1000, z = 7} -- Set to where you want them teleported in rook.

 -- Premium system
    if player:isPremium() then
        player:setStorageValue(43434, 1)
    elseif player:getStorageValue(43434) == 1 then
        if player:getVocation():getId() < 1 then
            player:setTown(Town(rookTownId))
            player:teleportTo(rookPos)
        else
            player:teleportTo({x = 32369, y = 32241, z = 7})
            player:setTown(Town("Thais"))
        end
        player:setStorageValue(43434, 0)
    end
 
when using this @Itutorial
I get this error:

Code:
Lua Script Error: [CreatureScript Interface]
data/creaturescripts/scripts/login.lua:onLogin
attempt to index a nil value
 
Lua:
   -- Premium system
    local rook = 1
    local thais = 2

    if player:isPremium() and player:getStorageValue(43434) ~= 1 then
        player:setStorageValue(43434, 1)   
    elseif not player:isPremium() and player:getStorageValue(43434) > 0 then --notpremmy and storage 1
        if player:getVocation():getId() == 0 then
           player:setStorageValue(43434, 0)
           player:sendTextMessage(22, "not premmy and rooker")
           player:setTown(Town(rook))
           player:teleportTo(player:getTown():getTemplePosition())
          
        elseif player:getVocation():getId() > 0 then
           player:sendTextMessage(22, "not premmy and mainland")
           player:setStorageValue(43434, 0)
           player:setTown(Town(thais))
           player:teleportTo(player:getTown():getTemplePosition())
        end   
    elseif not player:isPremium() and player:getStorageValue(43434) <= 0 then --notpremmy and storage 0
           if player:getVocation():getId() == 0 then
           player:sendTextMessage(22, "not premmy and rooker")
           player:setTown(Town(rook))
           player:teleportTo(player:getTown():getTemplePosition()       
        elseif player:getVocation():getId() > 0 then
           player:sendTextMessage(22, "not premmy and mainland")
           player:setTown(Town(thais))
           player:teleportTo(player:getTown():getTemplePosition())
        end   

    end
Test and post.
 
Back
Top