Ir para conteúdo

(Resolvido)adicionar exausth na potion (que nao seja do config.lua)

Featured Replies

Postado

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 por poko360 (veja o histórico de edições)

Resolvido por KotZletY

Ir para solução
  • Respostas 8
  • Visualizações 372
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @poko360 só vou te ajudar porque eu gosto pra krl de nanatsu no taizai, hahaha brincks:  

  • hahaa bom demais msm!!  funcionou perfeitamente, muito obrigado @KotZletY

Postado
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 ?

Doar

Postado
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
  • 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo