Esse cara é fera meu
Parabéns, ficou show mesmo ;D
REP+
Por Oneshot, 11 de mar. de 2012 em Actions e Talkactions
Esse cara é fera meu
Parabéns, ficou show mesmo ;D
REP+
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

já tinha visto esse código no outro fórum
está excelente *-*
parabéns amigo
abraços
Esse cara é fera meu
Parabéns, ficou show mesmo ;D
REP+
Faço das suas palavras a minha, bem fera o script, +REP
info
Grupo: Lorde
Registrado: 17/01/09
Posts: 2.1k
Reputação: +395
Char no Tibia: Adra Sata

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
info
Grupo: Marquês
Registrado: 05/07/09
Posts: 1.3k
Reputação: +732
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:
Ainda na pasta tools, crie um arquivo com nome firebug.lua, adicionando o conteúdo abaixo:
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 endE 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 enddata/actions
Cole as seguintes tags no arquivo actions.xml
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 por Oneshot