• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Amulet of Life for tfs 1.2

zxzxzx

New Member
Joined
Mar 12, 2011
Messages
334
Reaction score
3
Hello! I need amulet of life script (when player die he don't loose items, skills, level, amulet teleport player to temple when he die, amulet have 1 charge left.
 
Solution
Player.getSlotItem will return a nil value if the player is not wearing an amulet.
Code:
function onPrepareDeath(creature)
    local player = creature:getPlayer()
    if not player then
        return true
    end

    local amuletItem = player:getSlotItem(CONST_SLOT_NECKLACE)
    if not amuletItem or amuletItem:getId() ~= 2196 then
        return true
    end

    player:addHealth(player:getMaxHealth())
    player:addMana(player:getMaxMana())
    player:teleportTo(player:getTown():getTemplePosition())
    amuletItem:remove()
    return false
end
post ur script
local amulet_slot = 1 --Change the slot number for amulet im to lazy to look it up
function onPrepareDeath(player)
slotItem = player:getSlotItem(1).itemid

if slotItem == 2173 then
player:addHealth(player:getHealthMax())
player:addMana(player:getManaMax())
return false
end
return true
end
 
as i said previously, change 1 to CONST_SLOT_NECKLACE
and do the other changes i said in my post aswell
I added the lines and have an error: on prepare death CJ in function index (lua 3) attempt to index a nil value (lua 2)

code:
Code:
local amulet_slot = CONST_SLOT_NECKLACE --Change the slot number for amulet im to lazy to look it up
function onPrepareDeath(player)
slotItem = player:getSlotItem(1).itemid

if slotItem == 2173 then
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(slotItem, 1)
return false
end
return true
end
 
GetSlotItem(1) still
Read my post
I changed slot item to 8 - now no error in console but the script don't work amulet is still on the slot and when player dies skill and level go down.

Code:
local amulet_slot = CONST_SLOT_NECKLACE --Change the slot number for amulet im to lazy to look it up
function onPrepareDeath(player)
slotItem = player:getSlotItem(8).itemid

if slotItem == 2173 then
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(slotItem, 1)
return false
end
return true
end
 
1. There's no point in using amulet_slot if you aren't going to use it more than once
2. Slot item 8 is not necklace, listen to zothion, use CONST_SLOT_NECKLACE, not a number.
 
1. There's no point in using amulet_slot if you aren't going to use it more than once
2. Slot item 8 is not necklace, listen to zothion, use CONST_SLOT_NECKLACE, not a number.

Code:
local amulet_slot = CONST_SLOT_NECKLACE --Change the slot number for amulet im to lazy to look it up
function onPrepareDeath(player)
slotItem = player:getSlotItem(CONST_SLOT_NECKLACE).itemid

if slotItem == 2173 then
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(slotItem, 1)
return false
end
return true
end
not working? can you just edit my script?
 
Code:
function onPrepareDeath(player)
print(1)
slotItem = player:getSlotItem(CONST_SLOT_NECKLACE).itemid
print('Slot ItemID -> '.. slotItem ..'')
if slotItem == 2173 then
print(2)
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(slotItem, 1)
return false
end
print(3)
return true
end
Tell me what it prints in console
 
Code:
function onPrepareDeath(player)
print(1)
slotItem = player:getSlotItem(CONST_SLOT_NECKLACE).itemid
print('Slot ItemID -> '.. slotItem ..'')
if slotItem == 2173 then
print(2)
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(slotItem, 1)
return false
end
print(3)
return true
end
Tell me what it prints in console

1
SlotItemid -> 2196
3
 
.........................................
Change if slotItem == 2173 then to if slotItem == 2196 then
xDDD ok now works great! thanks for help! ;)

full code:
Code:
function onPrepareDeath(player)
slotItem = player:getSlotItem(CONST_SLOT_NECKLACE).itemid
if slotItem == 2196 then
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(slotItem, 1)
return false
end
return true
end
 
.........................................
Change if slotItem == 2173 then to if slotItem == 2196 then
Damn.. the script is not solved yet - new players can't die, they have red hp but can't die, error in console: creature script interface - onpreparedeath lua 2 attempt to index a nil value / stack traceback lua 1.
 
Code:
function onPrepareDeath(player)
if player:getSlotItem(CONST_SLOT_NECKLACE).itemid == 2196 then
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(player:getSlotItem(CONST_SLOT_NECKLACE), 1)
return false
end
return true
end
 
Code:
function onPrepareDeath(player)
if player:getSlotItem(CONST_SLOT_NECKLACE).itemid == 2196 then
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:teleportTo(player:getTown():getTemplePosition())
player:removeItem(player:getSlotItem(CONST_SLOT_NECKLACE), 1)
return false
end
return true
end


not working, this same problem.
 
Player.getSlotItem will return a nil value if the player is not wearing an amulet.
Code:
function onPrepareDeath(creature)
    local player = creature:getPlayer()
    if not player then
        return true
    end

    local amuletItem = player:getSlotItem(CONST_SLOT_NECKLACE)
    if not amuletItem or amuletItem:getId() ~= 2196 then
        return true
    end

    player:addHealth(player:getMaxHealth())
    player:addMana(player:getMaxMana())
    player:teleportTo(player:getTown():getTemplePosition())
    amuletItem:remove()
    return false
end
 
Solution
Player.getSlotItem will return a nil value if the player is not wearing an amulet.
Code:
function onPrepareDeath(creature)
    local player = creature:getPlayer()
    if not player then
        return true
    end

    local amuletItem = player:getSlotItem(CONST_SLOT_NECKLACE)
    if not amuletItem or amuletItem:getId() ~= 2196 then
        return true
    end

    player:addHealth(player:getMaxHealth())
    player:addMana(player:getMaxMana())
    player:teleportTo(player:getTown():getTemplePosition())
    amuletItem:remove()
    return false
end
ok now work! thanks ;)
 
Back
Top