-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
otserv 8.x [Original]Global Compacto Completo 8.60 [I'm Back](Links Atualizados) 1 2 3 4 10
Por soldoran,
- 137 respostas
- 79000 visualizações
-
script alguém pode me ajudar nessa spells aqui, queira que colocassem pro meu personagem ficar inatingível por 6 segundos e podendo atacar livremente
Por lazaroszz,
- 0 respostas
- 1404 visualizações
-
- 3 respostas
- 5210 visualizações
-
- 0 respostas
- 2518 visualizações
-
- 2 respostas
- 2352 visualizações
-

Pergunta
Seagull 19
Boa Noite, bom tenho um action e uma .lib de um sistema de SLOT.
Porem queria que as pedras SLOTERS, só precisassem dar "use with" nelas e no item.
LIB
SlotCondition = {} Slots = { config = { maxSlots = 2, msg = { type = MESSAGE_STATUS_DEFAULT, cantOpenSlot = "You cant open a slot on this item, or this isn't a valid sloter.", maxStat = "You can't add more bonus on this item with this sloter.", upgrade = "You upgrated the %s slot from %s to %s.", failed = "You failed upgrading the slot.", errorMsg = "Put the item on the table, and then the sloter, and use the hammer on it." }, conditions = { hp = {CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 50}, mp = {CONDITION_PARAM_STAT_MAXMANAPERCENT, 51}, ml = {CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 52}, club = {CONDITION_PARAM_SKILL_CLUBPERCENT, 53}, sword = {CONDITION_PARAM_SKILL_SWORDPERCENT, 54}, axe = {CONDITION_PARAM_SKILL_AXEPERCENT, 55}, shield = {CONDITION_PARAM_SKILL_SHIELDPERCENT, 56}, dist = {CONDITION_PARAM_SKILL_DISTANCEPERCENT, 57} }, chance = function(level, status, max) return 1-(1-((level/5) - (status/max))) end }, sloters = { [8303] = {"hp", {1, 15, 6}}, [8302] = {"mp", {1, 8, 5}}, [8301] = {"ml", {1, 4, 5}}, [8310] = {"club", {1, 6, 6}}, [8299] = {"sword", {1, 6, 6}}, [8298] = {"axe", {1, 6, 6}}, [8309] = {"shield", {1, 4, 5}}, [8297] = {"dist", {1, 5, 5}} }, appendItemName = function(self, txt) return self:setItemName(self:getItemName() .. " " .. txt) end, playerMessage = function(self, cid, msg, ...) return doPlayerSendTextMessage(cid, self.config.msg.type, self.config.msg[msg]:format(...)) end, isHandEquipment = function(self) local weptype = self:getItemWeaponType() return (weptype > 0) and (weptype < 7) end, isEquipment = function(self) return self:isHandEquipment() or (self.item.info.armor ~= 0) end, loadConditions = function(self) for cond, id in pairs(self.config.conditions) do SlotCondition[cond] = {} for i = 1, 100 do local slotCondition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(slotCondition, CONDITION_PARAM_TICKS, -1) setConditionParam(slotCondition, id[1], 100+i) setConditionParam(slotCondition, CONDITION_PARAM_BUFF, true) setConditionParam(slotCondition, CONDITION_PARAM_SUBID, id[2]) SlotCondition[cond][i] = slotCondition end end end, setItemName = function(self, name) return doItemSetAttribute(self.item.uid, "name", name) end } Slots:loadConditions() function Slots:loadItem(item) local newObj = setmetatable({item = {uid = item.uid, info = getItemInfo(item.itemid)}}, {__index = function(self, index) if(_G[index]) then return setmetatable({callback = _G[index]}, {__call = function(self, ...) return self.callback(item.uid, ...) end}) else return Slots[index] end end}) if(not newObj:isEquipment()) then return false end newObj:getItemSlotCount() return newObj end function Slots:getItemSlotCount() local e, n = self:getItemName():gsub("%[.-%]", "") self.item.slotCount = n return true end function Slots:getItemStatusBonus(status) local bonus = self:getItemName():match("%[".. status .."%+(.-)%%%]") return tonumber(bonus) or 0 end function Slots:getItemBonus() local result = {} self:getItemName():gsub("%[(.-)%+.-%%%]", function(s) table.insert(result, {s, self:getItemStatusBonus(s)}) return "" end) return result end function Slots:openNewSlot(cid, sloter) local sloterInfo = self.sloters[sloter.itemid] if(not sloterInfo) then self:playerMessage(cid, "errorMsg") return false end local statusBonus = self:getItemStatusBonus(sloterInfo[1]) if((statusBonus == 0) and self.item.slotCount == self.config.maxSlots) then self:playerMessage(cid, "cantOpenSlot") return false end if(self:isEquipment()) then if(statusBonus >= sloterInfo[2][2]) then self:playerMessage(cid, "maxStat") return false end doRemoveItem(sloter.uid, 1) if(math.random(0, 100) < (self.config.chance(sloterInfo[2][3], statusBonus, sloterInfo[2][2]) * 100)) then if(statusBonus > 0) then self:setItemName(self:getItemName():gsub("%[".. sloterInfo[1] .."%+(.-)%%%]", ("[%s+%s%%]"):format(sloterInfo[1], statusBonus + sloterInfo[2][1] .. "%"))) else self:appendItemName(("[%s+%s%%]"):format(sloterInfo[1], statusBonus + sloterInfo[2][1])) end self:playerMessage(cid, "upgrade", sloterInfo[1], statusBonus .. "%", statusBonus + sloterInfo[2][1] .. "%") return true end self:playerMessage(cid, "failed") return false else self:playerMessage(cid, "cantOpenSlot") return false end end Set = { config = { checkTime = 2000 }, isOnline = function(self) local players = getOnlinePlayers() for i, v in ipairs(players) do if(getCreatureByName(v) == self.cid) then return true end end return false end } function Set:loadSetFromPlayer(cid, n) local newSet = setmetatable({cid = cid}, {__index = self}) return n and newSet:loadBonus() or newSet:removeConditions() end function Set:removeConditions(subid) if(subid) then doRemoveCondition(self.cid, CONDITION_ATTRIBUTES, subid) return true end for cond, id in pairs(Slots.config.conditions) do doRemoveCondition(self.cid, CONDITION_ATTRIBUTES, id[2]) end end function Set:loadBonus() if(not self:isOnline()) then return false end for subid = 50, #Slots.config.conditions do doRemoveCondition(self.cid, CONDITION_ATTRIBUTES, subid) end local bonus = {} for slot = 1, 9 do local slotItem = getPlayerSlotItem(self.cid, slot) if(slotItem.itemid ~= 0) then local item = Slots:loadItem(slotItem) if(item) then for i, v in ipairs(item:getItemBonus()) do if((slot == 5) or (slot == 6)) then if(item:isHandEquipment()) then bonus[v[1]] = (bonus[v[1]] or 0) + v[2] end else bonus[v[1]] = (bonus[v[1]] or 0) + v[2] end end end end end for cond, id in pairs(Slots.config.conditions) do if(bonus[cond]) then local v = (cond == "hp") and getCreatureHealth(self.cid) or (cond == "mp") and getCreatureMana(self.cid) doAddCondition(self.cid, SlotCondition[cond][bonus[cond] > 100 and 100 or bonus[cond]]) doCreatureAddHealth(self.cid, (cond == "hp") and (v - getCreatureHealth(self.cid)) or 0) doCreatureAddMana(self.cid, (cond == "mp") and (v - getCreatureMana(self.cid)) or 0) else doRemoveCondition(self.cid, CONDITION_ATTRIBUTES, id[2]) end end addEvent(self.loadBonus, self.config.checkTime, self) endACTION
function onUse(cid, item, frompos, item2, topos) if(not isCreature(item2.uid)) then local itemEx = getThingFromPos({x = topos.x, y = topos.y, z = topos.z, stackpos = 2}) local sloter = getThingFromPos({x = topos.x, y = topos.y, z = topos.z, stackpos = 1}) local prick = getThingFromPos({x = topos.x, y = topos.y, z = topos.z, stackpos = 3}) if((itemEx.itemid == 0) or (sloter.itemid == 0) or (prick.itemid ~= 2555)) then return true end local slotItem = Slots:loadItem(itemEx) if(slotItem and slotItem:openNewSlot(cid, sloter)) then doSendMagicEffect(topos, 30) else doSendMagicEffect(topos, 2) end end return true endLink para o comentário
https://xtibia.com/forum/topic/215551-modificar-script/Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.