Oneshot 732 Postado Março 11, 2012 Share Postado Março 11, 2012 (editado) FAALA AÊ, ÉKS Recebi recentemente um pedido de um membro para criar uma action que, normalmente, não vem com os servidores - o mecanismo de criar rum do Tibia. Criei alguns scripts simples e editei alguns, tornando possível o funcionamento do sistema. data/actions/scripts Na pasta tools, crie um arquivo com nome sickle.lua, adicionando o conteúdo abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) if(itemEx.itemid == 5471) then doTransformItem(itemEx.uid, 5463) doCreateItem(5467, 1, toPosition) doDecayItem(itemEx.uid) return true end return destroyItem(cid, itemEx, toPosition) end Ainda na pasta tools, crie um arquivo com nome firebug.lua, adicionando o conteúdo abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) if(itemEx.itemid == 5466) then doSendMagicEffect(toPosition, CONST_ME_HITBYFIRE) doTransformItem(itemEx.uid, 5465) doRemoveItem(item.uid, 1) doDecayItem(itemEx.uid) return true end end Na pasta other, crie um arquivo com nome bunch of sugar cane.lua e adicione o conteúdo abaixo: local ITEM_IDS = { [5469] = 5513, [5470] = 5514 } function onUse(cid, item, fromPosition, itemEx, toPosition) if(itemEx.itemid == 5469 or itemEx.itemid == 5470) then doSendMagicEffect(toPosition, CONST_ME_BLOCKHIT) doTransformItem(itemEx.uid, ITEM_IDS[itemEx.itemid]) doRemoveItem(item.uid, 1) doDecayItem(itemEx.uid) return true elseif itemEx.itemid == 5513 or itemEx.itemid == 5514 then return doPlayerSendCancel(cid, "This machine is processing a bunch already.") end end E na pasta liquid, abra o arquivo containers.lua e substitua todo conteúdo por este: local DISTILLERY_ON = {5513, 5514} local DISTILLERY_OFF = {5469, 5470} local ITEM_RUM_FLASK = 5553 local ITEM_POOL = 2016 local TYPE_EMPTY = 0 local TYPE_WATER = 1 local TYPE_BLOOD = 2 local TYPE_BEER = 3 local TYPE_SLIME = 4 local TYPE_MANA_FLUID = 7 local TYPE_LIFE_FLUID = 10 local TYPE_OIL = 11 local TYPE_WINE = 15 local TYPE_MUD = 19 local TYPE_LAVA = 26 local TYPE_RUM = 27 local TYPE_SWAMP = 28 local oilLamps = {[2046] = 2044} local casks = {[1771] = TYPE_WATER, [1772] = TYPE_BEER, [1773] = TYPE_WINE} local alcoholDrinks = {TYPE_BEER, TYPE_WINE, TYPE_RUM} local poisonDrinks = {TYPE_SLIME, TYPE_SWAMP} local drunk = createConditionObject(CONDITION_DRUNK) setConditionParam(drunk, CONDITION_PARAM_TICKS, 60000) local poison = createConditionObject(CONDITION_POISON) setConditionParam(poison, CONDITION_PARAM_DELAYED, true) -- Condition will delay the first damage from when it's added setConditionParam(poison, CONDITION_PARAM_MINVALUE, -50) -- Minimum damage the condition can do at total setConditionParam(poison, CONDITION_PARAM_MAXVALUE, -120) -- Maximum damage setConditionParam(poison, CONDITION_PARAM_STARTVALUE, -5) -- The damage the condition will do on the first hit setConditionParam(poison, CONDITION_PARAM_TICKINTERVAL, 4000) -- Delay between damages setConditionParam(poison, CONDITION_PARAM_FORCEUPDATE, true) -- Re-update condition when adding it(ie. min/max value) local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) if(itemEx.uid == cid) then if(item.type == TYPE_EMPTY) then doPlayerSendCancel(cid, "It is empty.") return true end if(item.type == TYPE_MANA_FLUID) then if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(not doPlayerAddMana(cid, math.random(80, 160))) then return false end doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE) doAddCondition(cid, exhaust) elseif(item.type == TYPE_LIFE_FLUID) then if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(not doCreatureAddHealth(cid, math.random(40, 75))) then return false end doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE) doAddCondition(cid, exhaust) elseif(isInArray(alcoholDrinks, item.type)) then if(not doTargetCombatCondition(0, cid, drunk, CONST_ME_NONE)) then return false end doCreatureSay(cid, "Aaah...", TALKTYPE_ORANGE_1) elseif(isInArray(poisonDrinks, item.type)) then if(not doTargetCombatCondition(0, cid, poison, CONST_ME_NONE)) then return false end doCreatureSay(cid, "Urgh!", TALKTYPE_ORANGE_1) else doCreatureSay(cid, "Gulp.", TALKTYPE_ORANGE_1) end doChangeTypeItem(item.uid, TYPE_EMPTY) return true end if(not isCreature(itemEx.uid)) then if(item.type == TYPE_EMPTY) then if(isInArray(DISTILLERY_ON, itemEx.itemid)) then doChangeTypeItem(item.uid, TYPE_RUM) return true end if(isInArray(DISTILLERY_OFF, itemEx.itemid)) then doPlayerSendCancel(cid, "You have to process the bunch into the distillery to get rum.") return true end if(isItemFluidContainer(itemEx.itemid) and itemEx.type ~= TYPE_EMPTY) then doChangeTypeItem(item.uid, itemEx.type) doChangeTypeItem(itemEx.uid, TYPE_EMPTY) return true end if(casks[itemEx.itemid] ~= nil) then doChangeTypeItem(item.uid, casks[itemEx.itemid]) return true end local fluidEx = getFluidSourceType(itemEx.itemid) if(fluidEx ~= false) then doChangeTypeItem(item.uid, fluidEx) return true end doPlayerSendCancel(cid, "It is empty.") return true end if(item.type == TYPE_OIL and oilLamps[itemEx.itemid] ~= nil) then doTransformItem(itemEx.uid, oilLamps[itemEx.itemid]) doChangeTypeItem(item.uid, TYPE_NONE) return true end if(hasProperty(itemEx.uid, CONST_PROP_BLOCKSOLID)) then return false end end doDecayItem(doCreateItem(ITEM_POOL, item.type, toPosition)) doChangeTypeItem(item.uid, TYPE_EMPTY) return true end data/actions Cole as seguintes tags no arquivo actions.xml <action itemid="2405" event="script" value="tools/sickle.lua"> <action itemid="5468" event="script" value="tools/fire bug.lua"> <action itemid="5467" event="script" value="other/bunch of sugar cane.lua"> Se você quiser mudar o tempo de duração da máquina funcionando, procure no seu arquivo items.xml pelos IDs 5513 e 5514 e altere o valor do atributo duration. O padrão se não me engano é 15 segundos. Editado Março 11, 2012 por Oneshot Link para o comentário https://xtibia.com/forum/topic/182315-fazendo-rum-bunch-of-sugar-cane/ Compartilhar em outros sites More sharing options...
20cm 70 Postado Março 11, 2012 Share Postado Março 11, 2012 Esse cara é fera meu Parabéns, ficou show mesmo ;D REP+ Link para o comentário https://xtibia.com/forum/topic/182315-fazendo-rum-bunch-of-sugar-cane/#findComment-1215572 Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Março 11, 2012 Share Postado Março 11, 2012 já tinha visto esse código no outro fórum está excelente *-* parabéns amigo abraços Link para o comentário https://xtibia.com/forum/topic/182315-fazendo-rum-bunch-of-sugar-cane/#findComment-1215590 Compartilhar em outros sites More sharing options...
alldakie 160 Postado Março 11, 2012 Share Postado Março 11, 2012 Esse cara é fera meu Parabéns, ficou show mesmo ;D REP+ Faço das suas palavras a minha, bem fera o script, +REP Link para o comentário https://xtibia.com/forum/topic/182315-fazendo-rum-bunch-of-sugar-cane/#findComment-1215592 Compartilhar em outros sites More sharing options...
SkyDangerous 395 Postado Março 11, 2012 Share Postado Março 11, 2012 Como ja tinha visto no outro fórum e comentado e irei dizer as mesmas palavras. Excelente, código limpo, simples e muito eficiente. Quem sabe os servidores já iram lançar com esse sistema ;D Link para o comentário https://xtibia.com/forum/topic/182315-fazendo-rum-bunch-of-sugar-cane/#findComment-1215596 Compartilhar em outros sites More sharing options...
Posts Recomendados