Postado Julho 11, 2018 6 anos Alguem pode da um help de como colocar uma condition pra dar exausth nesse action de potions? Spoiler local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "yes", range = -1, area = {1, 1} -- if not set correctly, the message will be sent only to user of the item } local multiplier = { health = 1.0, mana = 1.0 } local POTIONS = { [8704] = {empty = 7636, splash = 42, rate = 0.5}, vocations = {4, 8}, -- small health potion [7618] = {empty = 7636, splash = 42, rate = 0.5}, vocations = {4, 8}, -- health potion [7588] = {empty = 7634, splash = 42, rate = 1.5, level = 50, vocations = {4, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 42, rate = 2.5, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 42, rate = 3, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 47, rateMana = 1.5}, -- mana potion [7589] = {empty = 7634, splash = 47, rateMana = 2.5, level = 50, vocations = {1, 2, 5, 6}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 47, rateMana = 3.5, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 43, rate = 1, rateMana = 1.5, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } for index, potion in pairs(POTIONS) do if(type(index) == 'number')then for k, v in pairs(config) do if(not potion[k]) then potion[k] = v end end if(potion.removeOnUse) then potion.removeOnUse = getBooleanFromString(potion.removeOnUse) end if(potion.usableOnTarget) then potion.usableOnTarget = getBooleanFromString(potion.usableOnTarget) end if(potion.splashable) then potion.splashable = getBooleanFromString(potion.splashable) end if(type(potion.health) == 'table' and table.maxn(potion.health) > 1) then potion.health[1] = math.ceil(potion.health[1] * multiplier.health) potion.health[2] = math.ceil(potion.health[2] * multiplier.health) else potion.health = nil end if(type(potion.mana) == 'table' and table.maxn(potion.mana) > 1) then potion.mana[1] = math.ceil(potion.mana[1] * multiplier.mana) potion.mana[2] = math.ceil(potion.mana[2] * multiplier.mana) else potion.mana = nil end POTIONS[index] = potion end end function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not potion.usableOnTarget and cid ~= itemEx.uid)) then if(not potion.splashable or not potion.splash) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPosition(item.uid) end return true end if(((potion.level and getPlayerLevel(itemEx.uid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(itemEx.uid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_MONSTER, false, cid) return true end if(potion.range > 0 and cid ~= itemEx.uid and getDistanceBetween(getThingPosition(cid), getThingPosition(itemEx.uid)) > potion.range and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_CANUSEFAR)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_TOOFARAWAY) return true end local playerlevel = getPlayerLevel(itemEx.uid) if(potion.rateMana and not doTargetCombatMana(0, itemEx.uid, playerlevel*potion.rateMana, playerlevel*potion.rateMana, CONST_ME_MAGIC_BLUE)) then return false end if(potion.rate and not doTargetCombatHealth(0, itemEx.uid, COMBAT_HEALING, playerlevel*potion.rate, playerlevel*potion.rate, CONST_ME_MAGIC_BLUE)) then return false end if(type(potion.area) == 'table' and table.maxn(potion.area) > 1) then for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), potion.area[1], potion.area[2])) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, tid) end end else doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, itemEx.uid) if(itemEx.uid ~= cid) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, cid) end end return true end tipo, eu NÃO quero que o exausth seja o do config.lua porque tipo, meu config.lua é 0.5 segundos (por causa de outro script), dai eu queria colocar 1 segundo nas potions e 0.5 no config.lua timeBetweenActions = 500 timeBetweenExActions = 500 Editado Julho 11, 2018 6 anos por poko360 (veja o histórico de edições)
Postado Julho 12, 2018 6 anos local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "yes", range = -1, area = {1, 1} -- if not set correctly, the message will be sent only to user of the item } local multiplier = { health = 1.0, mana = 1.0 } local potion_exhaustion = 123212 local POTIONS = { [8704] = {empty = 7636, splash = 42, rate = 0.5,exhaustion = 2.5}, vocations = {4, 8}, -- small health potion [7618] = {empty = 7636, splash = 42, rate = 0.5,exhaustion = 3.5}, vocations = {4, 8}, -- health potion [7588] = {empty = 7634, splash = 42, rate = 1.5,exhaustion = 4.5 ,level = 50, vocations = {4, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 42, rate = 2.5,exhaustion = 5.5, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 42, rate = 3.0,exhaustion = 6.5, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 47, rateMana = 1.5,exhaustion = 6.5}, -- mana potion [7589] = {empty = 7634, splash = 47, rateMana = 2.5,exhaustion = 6.5, level = 50, vocations = {1, 2, 5, 6}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 47, rateMana = 3.5,exhaustion = 6.5, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 43, rate = 1, rateMana = 1.5,exhaustion = 6.5, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } for index, potion in pairs(POTIONS) do if(type(index) == 'number')then for k, v in pairs(config) do if(not potion[k]) then potion[k] = v end end if(potion.removeOnUse) then potion.removeOnUse = getBooleanFromString(potion.removeOnUse) end if(potion.usableOnTarget) then potion.usableOnTarget = getBooleanFromString(potion.usableOnTarget) end if(potion.splashable) then potion.splashable = getBooleanFromString(potion.splashable) end if(type(potion.health) == 'table' and table.maxn(potion.health) > 1) then potion.health[1] = math.ceil(potion.health[1] * multiplier.health) potion.health[2] = math.ceil(potion.health[2] * multiplier.health) else potion.health = nil end if(type(potion.mana) == 'table' and table.maxn(potion.mana) > 1) then potion.mana[1] = math.ceil(potion.mana[1] * multiplier.mana) potion.mana[2] = math.ceil(potion.mana[2] * multiplier.mana) else potion.mana = nil end POTIONS[index] = potion end end function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not potion.usableOnTarget and cid ~= itemEx.uid)) then if(not potion.splashable or not potion.splash) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPosition(item.uid) end return true end if(((potion.level and getPlayerLevel(itemEx.uid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(itemEx.uid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_MONSTER, false, cid) return true end if exhaustion.check(potion_exhaustion) then return doPlayerSendCancel(cid,"Wait "..exhaustion.get(potion_exhaustion).." seconds.") end if(potion.range > 0 and cid ~= itemEx.uid and getDistanceBetween(getThingPosition(cid), getThingPosition(itemEx.uid)) > potion.range and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_CANUSEFAR)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_TOOFARAWAY) return true end local playerlevel = getPlayerLevel(itemEx.uid) if(potion.rateMana and not doTargetCombatMana(0, itemEx.uid, playerlevel*potion.rateMana, playerlevel*potion.rateMana, CONST_ME_MAGIC_BLUE)) then return false end if(potion.rate and not doTargetCombatHealth(0, itemEx.uid, COMBAT_HEALING, playerlevel*potion.rate, playerlevel*potion.rate, CONST_ME_MAGIC_BLUE)) then return false end if(type(potion.area) == 'table' and table.maxn(potion.area) > 1) then for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), potion.area[1], potion.area[2])) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, tid) end end else doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, itemEx.uid) if(itemEx.uid ~= cid) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, cid) end end exhaustion.set(potion_exhaustion,potion.exhaustion) return true end Te ajudei ?? Que tal fazer uma contribuição ?
Postado Julho 12, 2018 6 anos 3 horas atrás, DboExplorer disse: local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "yes", range = -1, area = {1, 1} -- if not set correctly, the message will be sent only to user of the item } local multiplier = { health = 1.0, mana = 1.0 } local potion_exhaustion = 123212 local POTIONS = { [8704] = {empty = 7636, splash = 42, rate = 0.5,exhaustion = 2.5}, vocations = {4, 8}, -- small health potion [7618] = {empty = 7636, splash = 42, rate = 0.5,exhaustion = 3.5}, vocations = {4, 8}, -- health potion [7588] = {empty = 7634, splash = 42, rate = 1.5,exhaustion = 4.5 ,level = 50, vocations = {4, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 42, rate = 2.5,exhaustion = 5.5, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 42, rate = 3.0,exhaustion = 6.5, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 47, rateMana = 1.5,exhaustion = 6.5}, -- mana potion [7589] = {empty = 7634, splash = 47, rateMana = 2.5,exhaustion = 6.5, level = 50, vocations = {1, 2, 5, 6}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 47, rateMana = 3.5,exhaustion = 6.5, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 43, rate = 1, rateMana = 1.5,exhaustion = 6.5, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } for index, potion in pairs(POTIONS) do if(type(index) == 'number')then for k, v in pairs(config) do if(not potion[k]) then potion[k] = v end end if(potion.removeOnUse) then potion.removeOnUse = getBooleanFromString(potion.removeOnUse) end if(potion.usableOnTarget) then potion.usableOnTarget = getBooleanFromString(potion.usableOnTarget) end if(potion.splashable) then potion.splashable = getBooleanFromString(potion.splashable) end if(type(potion.health) == 'table' and table.maxn(potion.health) > 1) then potion.health[1] = math.ceil(potion.health[1] * multiplier.health) potion.health[2] = math.ceil(potion.health[2] * multiplier.health) else potion.health = nil end if(type(potion.mana) == 'table' and table.maxn(potion.mana) > 1) then potion.mana[1] = math.ceil(potion.mana[1] * multiplier.mana) potion.mana[2] = math.ceil(potion.mana[2] * multiplier.mana) else potion.mana = nil end POTIONS[index] = potion end end function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not potion.usableOnTarget and cid ~= itemEx.uid)) then if(not potion.splashable or not potion.splash) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPosition(item.uid) end return true end if(((potion.level and getPlayerLevel(itemEx.uid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(itemEx.uid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_MONSTER, false, cid) return true end if exhaustion.check(potion_exhaustion) then return doPlayerSendCancel(cid,"Wait "..exhaustion.get(potion_exhaustion).." seconds.") end if(potion.range > 0 and cid ~= itemEx.uid and getDistanceBetween(getThingPosition(cid), getThingPosition(itemEx.uid)) > potion.range and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_CANUSEFAR)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_TOOFARAWAY) return true end local playerlevel = getPlayerLevel(itemEx.uid) if(potion.rateMana and not doTargetCombatMana(0, itemEx.uid, playerlevel*potion.rateMana, playerlevel*potion.rateMana, CONST_ME_MAGIC_BLUE)) then return false end if(potion.rate and not doTargetCombatHealth(0, itemEx.uid, COMBAT_HEALING, playerlevel*potion.rate, playerlevel*potion.rate, CONST_ME_MAGIC_BLUE)) then return false end if(type(potion.area) == 'table' and table.maxn(potion.area) > 1) then for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), potion.area[1], potion.area[2])) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, tid) end end else doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, itemEx.uid) if(itemEx.uid ~= cid) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_MONSTER, false, cid) end end exhaustion.set(potion_exhaustion,potion.exhaustion) return true end apareceu esse erro aki
Postado Julho 12, 2018 6 anos Autor @DboExplorer deu isso aqui Spoiler [14:55:09.475] [Error - Action Interface] [14:55:09.478] data/actions/scripts/liquids/potions.lua:onUse [14:55:09.482] Description: [14:55:09.483] (LuaInterface::luaGetCreatureStorage) Creature not found [14:55:09.493] [Error - Action Interface] [14:55:09.496] data/actions/scripts/liquids/potions.lua:onUse [14:55:09.498] Description: [14:55:09.499] data/lib/034-exhaustion.lua:4: attempt to compare number with boolean [14:55:09.503] stack traceback: [14:55:09.505] data/lib/034-exhaustion.lua:4: in function 'check' [14:55:09.508] data/actions/scripts/liquids/potions.lua:95: in function <data/actions/scripts/liquids/potions.lua:69>
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.