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
local amulet_slot = 1 --Change the slot number for amulet im to lazy to look it uppost ur script
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)as i said previously, change 1 to CONST_SLOT_NECKLACE
and do the other changes i said in my post aswell
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
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.GetSlotItem(1) still
Read my post
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.
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
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 consoleCode: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
xDDD ok now works great! thanks for help!.........................................
Change if slotItem == 2173 then to if slotItem == 2196 then
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
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..........................................
Change if slotItem == 2173 then to if slotItem == 2196 then
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
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! thanksPlayer.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