Ir para conteúdo
  • 0

[Dúvida]Potions/infinita


rogeriomatx

Pergunta

Ola pessoal do Xtibia, estou aqui solicitando uma ajuda!! na mudança desse script...

Tipo no meu OT as potions não são infinitas...mas quero que caso player seja premium as potions não irá remover cargas...tornando assim elas infinitas para premiuns...

 

 

bom é isso!!!

local config = {
	removeOnUse = "yes",
	usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
	splashable = "yes",
	realAnimation = "no", -- make text effect visible only for players in range 1x1
	healthMultiplier = 1.0,
	manaMultiplier = 1.0
}

config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)

local POTIONS = {
	[8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion
	[7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
	[7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 14}, vocStr = "knights and paladins"}, -- strong health potion
	[7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
	[8473] = {empty = 7635, splash = 2, health = {900, 1000}, level = 130, vocations = {4, 8 , 12, 14}, vocStr = "knights"}, -- ultimate health potion
	[7620] = {empty = 7636, splash = 7, mana = {100, 190}}, -- mana potion
	[7589] = {empty = 7634, splash = 7, mana = {150, 290}, level = 50, vocations = {1, 2, 3, 5, 6, 7 ,11, 13, 14}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
	[7590] = {empty = 7635, splash = 7, mana = {400, 450}, level = 80, vocations = {1, 2, 5, 6 ,9 ,10, 13, 14}, vocStr = "sorcerers and druids"}, -- great mana potion
	[8472] = {empty = 7635, splash = 3, health = {300, 400}, mana = {210, 250}, level = 80, vocations = {3, 7 ,11 ,13}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))

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 config.usableOnTarget and cid ~= itemEx.uid)) then
			if(not config.splashable) then
					return false
			end
			if(toPosition.x == CONTAINER_POSITION) then
					toPosition = getThingPos(item.uid)
			end
			doDecayItem(doCreateItem(2016, potion.splash, toPosition))
			return TRUE
	end
	if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
			return TRUE
	end
	if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) 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_ORANGE_1)
			return TRUE
	end
	local health = potion.health
	if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
			return false
	end
	local mana = potion.mana
	if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
			return false
	end
	doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
	if(not realAnimation) then
			doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
	else
			for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
					if(isPlayer(tid)) then
							doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
					end
			end
	end
if(not potion.empty or config.removeOnUse) then
 doRemoveItem(item.uid, 1)
 return true
end
doRemoveItem(item.uid, 1)
return true
end

 

if(not potion.empty or config.removeOnUse) then

doRemoveItem(item.uid, 1)

return true

end

doRemoveItem(item.uid, 1)

return true

end

 

Em VERMELHO é a condição de Remover!!! Queria que adiciona-se uma condição que se o player premium usa potion não remove-se

Editado por rogeriok
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
local config = {
			removeOnUse = "yes",
			usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
			splashable = "yes",
			realAnimation = "no", -- make text effect visible only for players in range 1x1
			healthMultiplier = 1.0,
			manaMultiplier = 1.0
}
config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)
local POTIONS = {
			[8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion
			[7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
			[7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 14}, vocStr = "knights and paladins"}, -- strong health potion
			[7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
			[8473] = {empty = 7635, splash = 2, health = {900, 1000}, level = 130, vocations = {4, 8 , 12, 14}, vocStr = "knights"}, -- ultimate health potion
			[7620] = {empty = 7636, splash = 7, mana = {100, 190}}, -- mana potion
			[7589] = {empty = 7634, splash = 7, mana = {150, 290}, level = 50, vocations = {1, 2, 3, 5, 6, 7 ,11, 13, 14}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
			[7590] = {empty = 7635, splash = 7, mana = {400, 450}, level = 80, vocations = {1, 2, 5, 6 ,9 ,10, 13, 14}, vocStr = "sorcerers and druids"}, -- great mana potion
			[8472] = {empty = 7635, splash = 3, health = {300, 400}, mana = {210, 250}, level = 80, vocations = {3, 7 ,11 ,13}, vocStr = "paladins"} -- great spirit potion
}
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))
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 config.usableOnTarget and cid ~= itemEx.uid)) then
							if(not config.splashable) then
											return false
							end
							if(toPosition.x == CONTAINER_POSITION) then
											toPosition = getThingPos(item.uid)
							end
							doDecayItem(doCreateItem(2016, potion.splash, toPosition))
							return TRUE
			end
			if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
							doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
							return TRUE
			end
			if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) 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_ORANGE_1)
							return TRUE
			end
			local health = potion.health
			if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
							return false
			end
			local mana = potion.mana
			if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
							return false
			end
			doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
			if(not realAnimation) then
							doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
			else
							for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
											if(isPlayer(tid)) then
															doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
											end
							end
			end
if getPlayerPremiumDays(cid) > 0 then			  
elseif(not potion.empty or config.removeOnUse) then
	 doRemoveItem(item.uid, 1)
	 return true
	 end
doRemoveItem(item.uid, 1)						  
return true
end

Editado por Robinhood
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...