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

MoveEvent Slot system - Multi slot (No crashes)

Fix for tfs 0.4:

Code:
--[[
Slot system 100% by mock \o
]]
---Config
local conf = {
maxSlotCount=2,
ignoredIds={}
}
--End
function choose(...) --- Function by mock.
	local arg = {...}
	return arg[math.random(1,#arg)]
end
if not getItemAttack then
	function getItemAttack(uid)
		return getItemAttribute(uid,'attack')
	end
	function getItemDefense(uid)
		return getItemAttribute(uid,'defense')
	end
end
local function isArmor(uid) -- Function by Mock the bear.
    if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then
		return true
	end
	return false
end
local function isWeapon(uid) -- Function by Mock the bear.
	uid = uid or 0
	local f = getItemWeaponType(uid)
	if f == 1 or f == 2 or f == 3 then
		return true
	end
	return false
end
local function isShield(uid) -- Function by Mock the bear.
	uid = uid or 0
	if getItemWeaponType(uid) == 5 then
		return true
	end
	return false
end
local function isBow(uid) -- Function by Mock the bear.
	uid = uid or 0
	if getItemWeaponType(uid) == 4 and not isItemStackable(uid) then
		return true
	end
	return false
end
function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB)
	if item.uid == 0 or item.itemid == 0 then return false end
	toPosition.stackpos = 255
	if item.uid == 0 or item.itemid == 0 then return false end
	toPosition.stackpos = 255
    if isInArray(conf.ignoredIds, itemEx.itemid)
        or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5)
        or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx))
        or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then
        doPlayerSendTextMessage(cid,22,"You cant open a slot on this item.")
        return TRUE
    end
    if isCreature(itemEx.uid) then
        return FALSE
    end
	local nam = getItemName(itemEx.uid)
	function getper()
		local n = 1
		for i=1,10 do
			n = n+math.random(0,10)
			if n < 8*i then
				break
			end
		end
		return n
	end
	function getSlotCount(nam)
		local c = 0
		for _ in nam:gmatch('%[(.-)%]') do
			c = c+1
		end
		return c
	end
	if getSlotCount(nam) < conf.maxSlotCount then
		local l = choose('hp','mp','ml','cas','shield','dist')
		local p = getper()
 
		doSendMagicEffect(toPosition,30)
		nam = nam..' ['..l..'.+'..p..'%]'
		doSendAnimatedText(toPosition,l..' '..p..'%',120)
		doItemSetAttribute(itemEx.uid,'name',nam)
		doRemoveItem(item.uid,1)
	else
		doPlayerSendTextMessage(cid,22,"You cant open a slot on this item.")
	end
	return true
end

;D
 
Fix for tfs 0.4:

Code:
--[[
Slot system 100% by mock \o
]]
---Config
local conf = {
maxSlotCount=2,
ignoredIds={}
}
--End
function choose(...) --- Function by mock.
	local arg = {...}
	return arg[math.random(1,#arg)]
end
if not getItemAttack then
	function getItemAttack(uid)
		return getItemAttribute(uid,'attack')
	end
	function getItemDefense(uid)
		return getItemAttribute(uid,'defense')
	end
end
local function isArmor(uid) -- Function by Mock the bear.
    if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then
		return true
	end
	return false
end
local function isWeapon(uid) -- Function by Mock the bear.
	uid = uid or 0
	local f = getItemWeaponType(uid)
	if f == 1 or f == 2 or f == 3 then
		return true
	end
	return false
end
local function isShield(uid) -- Function by Mock the bear.
	uid = uid or 0
	if getItemWeaponType(uid) == 5 then
		return true
	end
	return false
end
local function isBow(uid) -- Function by Mock the bear.
	uid = uid or 0
	if getItemWeaponType(uid) == 4 and not isItemStackable(uid) then
		return true
	end
	return false
end
function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB)
	if item.uid == 0 or item.itemid == 0 then return false end
	toPosition.stackpos = 255
	if item.uid == 0 or item.itemid == 0 then return false end
	toPosition.stackpos = 255
    if isInArray(conf.ignoredIds, itemEx.itemid)
        or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5)
        or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx))
        or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then
        doPlayerSendTextMessage(cid,22,"You cant open a slot on this item.")
        return TRUE
    end
    if isCreature(itemEx.uid) then
        return FALSE
    end
	local nam = getItemName(itemEx.uid)
	function getper()
		local n = 1
		for i=1,10 do
			n = n+math.random(0,10)
			if n < 8*i then
				break
			end
		end
		return n
	end
	function getSlotCount(nam)
		local c = 0
		for _ in nam:gmatch('%[(.-)%]') do
			c = c+1
		end
		return c
	end
	if getSlotCount(nam) < conf.maxSlotCount then
		local l = choose('hp','mp','ml','cas','shield','dist')
		local p = getper()
 
		doSendMagicEffect(toPosition,30)
		nam = nam..' ['..l..'.+'..p..'%]'
		doSendAnimatedText(toPosition,l..' '..p..'%',120)
		doItemSetAttribute(itemEx.uid,'name',nam)
		doRemoveItem(item.uid,1)
	else
		doPlayerSendTextMessage(cid,22,"You cant open a slot on this item.")
	end
	return true
end

;D

Doesn't Work :S still giving bug
 
I am have problemic:
Code:
[12/03/2011 01:07:25] [Error - Action Interface] 
[12/03/2011 01:07:25] data/actions/scripts/upgrade.lua:onUse
[12/03/2011 01:07:25] Description: 
[12/03/2011 01:07:25] data/actions/scripts/upgrade.lua:37: bad argument #1 to 'abs' (number expected, got string)
[12/03/2011 01:07:25] stack traceback:
[12/03/2011 01:07:25] 	[C]: in function 'abs'
[12/03/2011 01:07:25] 	data/actions/scripts/upgrade.lua:37: in function 'getLevel'
[12/03/2011 01:07:25] 	data/actions/scripts/upgrade.lua:43: in function <data/actions/scripts/upgrade.lua:40>
 
Last edited:
when player got some slots and for example there is a slot opened for mp
if he move out hes wepon and put it again to hand he will gain full mana.
it's not nice becous plaers can train magic level, and its free mana dont need to refile it by mana points.
can u fix it or remove hp and mp slots in your script ?

got the same error could any one help?
 
where i can edit the max slots for an item?
And a player can remove the slots from the item?
 
Last edited:
Hey Guuyss ;D

I have request, becous in this script one upgrade add % of mp, hp, etc. (
looks that
09:10 You see a golden armor [hp.+21%] [ml.+7%] (Arm:14).
It can only be wielded properly by elect knights and elect paladins.
It weighs 80.00 oz.
[...]

But if someone have 2000hp, and it gives +21% of HP, he would have +~500hp, and is too much!

So I want to change this script, too (example) [hp.+50] [ml. +25] or [dist.+5] [cas. +8]
looks like on this video YouTube - ‪Pharenight Teaser #1‬&rlm;

but I do not know how to do it :(
Mock or someone other, can you help me? Please.
REP++ ^_^
 
instead of CONDITION_PARAM_STAT_MAXHEALTHPERCENT, use CONDITION_PARAM_STAT_MAXHEALTH ?
 
Back
Top