chilibizck
New Member
- Joined
- Oct 12, 2019
- Messages
- 6
- Reaction score
- 2
this exact same that you posted before is the one working for you?this is the same script, I tried to make it shorter than before
and added a script (slot remover) made by Summ on Solved - Upgrading System Heko (https://otland.net/threads/upgrading-system-heko.172509/#post-1681118)
I don't know if it works well, going to try today or tomorrow.
Lua:--[[ 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) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then return true end return false end local nam = getItemName(itemEx.uid) local removeUpgrade = { [2898] = "last", -- "all", "last" or "first" [3010] = "first" -- "all", "last" or "first" } --------------------------------------------- ----local function getper() -----local n = math.random(4,10) ----- return n ---- end --------------------------------------------- local 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 ----------------- local function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c+1 end return c end local function getSlots(nam) local cx = {} for slot in nam:gmatch('%[(.-)%]') do table.insert(cx, slot) end return cx end ---------------- -------------------------------------INBUIMENT ROMOVER-------------------------------- function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB) if removeUpgrade[item.itemid] then 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, 24,"You cannot remove a slot from this item. #") return true end if isCreature(itemEx.uid) then return false end if getSlotCount(nam) >= 1 then local slots = getSlots(nam) local newName = getItemInfo(itemEx.itemid).name for ix = 1, #slots do if removeUpgrade[item.itemid] ~= "all" and (not((removeUpgrade[item.itemid] == "first" and ix == 1) or (removeUpgrade[item.itemid] == "last" and ix == #slots))) then newName = newName .. ' [' .. slots[ix] .. ']' end end doSendMagicEffect(toPosition,30) doSendAnimatedText(toPosition,'SLOT REMOVED',120) doItemSetAttribute(itemEx.uid,'name', newName) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, 24,"You cannot remove a slot here.") end end --------------------------END INBUIMENT REMOVER-----------checar ultimo end y el return antes del ultimo end----------------- function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB) if item.itemid ==8300 then 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, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end if getSlotCount(nam) < conf.maxSlotCount then local mlv = choose('ml','ml') local pml = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..mlv..'.+'..pml..'%]' doSendAnimatedText(toPosition,mlv..' '..pml..'%',120) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") end end if item.itemid ==8303 then 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, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end if getSlotCount(nam) < conf.maxSlotCount then local hpts = choose('hp','hp') local php = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..hpts..'.+'..php..'%]' doSendAnimatedText(toPosition,hpts..' '..php..'%',120) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") end end if item.itemid ==8306 then 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, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end if getSlotCount(nam) < conf.maxSlotCount then local mpts = choose('mp','mp') local pmp = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..mpts..'.+'..pmp..'%]' doSendAnimatedText(toPosition,mpts..' '..pmp..'%',120) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") end end if item.itemid ==8299 then 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, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end if getSlotCount(nam) < conf.maxSlotCount then local casw = choose('cas','cas') local pcas = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..casw..'.+'..pcas..'%]' doSendAnimatedText(toPosition,casw..' '..pcas..'%',120) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") end end if item.itemid ==8301 then 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, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end if getSlotCount(nam) < conf.maxSlotCount then local dis = choose('dist','dist') local pdist = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..dis..'.+'..pdist..'%]' doSendAnimatedText(toPosition,dis..' '..pdist..'%',120) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") end end if item.itemid ==8302 then 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, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end if getSlotCount(nam) < conf.maxSlotCount then local shi = choose('shield','shield') local pshield = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..shi..'.+'..pshield..'%]' doSendAnimatedText(toPosition,shi..' '..pshield..'%',120) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") end end return true end
i have this error:
Description:
[3:54:38.389] data/actions/scripts/slot.lua:51: attempt to index global 'itemEx' (a nil value)
[3:54:38.389] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/slot.lua)