• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Problems With Runes And Potions 8.60 | Cykotitan HELP ME!

Kojiiro

Nobody cares. Do yourself.
Joined
May 10, 2010
Messages
534
Reaction score
9
Location
Brazil
Good Guys, to a problem with potions with innovative changes, implanted in the tibia global.Mais let's my problem,



1: well my problem is that the player use the potions, vials appear separated like this in the picture below:



I wish them the same as you stay tibia overall they are I used the empty vials to Juntao alone or in the case are already together below:


My script below:

local config = {
removeOnUse = "no",
usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
splashable = "no",
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}, 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 = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

[7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion
[7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
[7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion

[8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, 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))
doTransformItem(item.uid, potion.empty)
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

doAddCondition(cid, exhaust)
if(not potion.empty or config.removeOnUse) then
doRemoveItem(item.uid, 1)
return true
end
doRemoveItem(item.uid, 1)
doPlayerAddItem(cid, potion.empty, 1)
return true
end


Second Problem.

2: Next 500 mana potions have I in my bp, more when I use the hotkey it only shows 100 and does not show all, same thing is good runes, Will someone help me? Below pic:



Runes:




Would someone help me on these two problems?
Hugs Kojiiro :D
 
Last edited:
First problem:
  • TFS exe (you must replace it, this is 0.3.6pl1): TheForgottenServer rar
  • script:
    Code:
    local config = {
    	removeOnUse = "no",
    	usableOnTarget = "no", -- can be used on target? (fe. healing friend)
    	splashable = "no",
    	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 = {200, 300}}, -- small health potion
    	[7618] = {empty = 7636, splash = 2, health = {600, 700}}, -- health potion
    	[7588] = {empty = 7634, splash = 2, health = {1800, 2300}, level = 500, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
    	[7591] = {empty = 7635, splash = 2, health = {2500, 3800}, level = 800, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
    	[8473] = {empty = 7635, splash = 2, health = {4200, 6000}, level = 1300, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion
    
    	[7620] = {empty = 7636, splash = 7, mana = {600, 700}}, -- mana potion
    	[7589] = {empty = 7634, splash = 7, mana = {1400, 1800}, level = 500, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
    	[7590] = {empty = 7635, splash = 7, mana = {2200, 3000}, level = 800, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion
    	[7439] = {empty = 7439, splash = 7, mana = {4400, 6000}, level = 2000, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- berserk potion
    	[7443] = {empty = 7443, splash = 7, health = {6200, 8000}, level = 2000, vocations = {4, 8}, vocStr = "knights"}, -- bullseye potion	
    
    	[8472] = {empty = 7635, splash = 3, health = {1600, 1800}, mana = {1200, 1500}, level = 800, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion
    }
    
    local exhaust = createConditionObject(CONDITION_EXHAUST)
    setConditionParam(exhaust, CONDITION_PARAM_TICKS, 950)
    
    function onUse(cid, item, fromPosition, itemEx, toPosition)
    	local potion = POTIONS[item.itemid]
    	if(not potion) then
    		return false
    	end
    
    	itemEx.uid = isInArray({7439, 7443}, item.itemid) and cid or itemEx.uid
    	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))
    		doTransformItem(item.uid, potion.empty)
    		return true
    	end
    
    	if(hasCondition(cid, CONDITION_EXHAUST)) 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 potion.", 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, "Aaooh...", TALKTYPE_ORANGE_1)
    	else
    		for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
    			if(isPlayer(tid)) then
    				doCreatureSay(itemEx.uid, "Aaooh...", TALKTYPE_ORANGE_1, false, tid)
    			end
    		end
    	end
    
    	doAddCondition(cid, exhaust)
    	if(not potion.empty or potion.empty == item.itemid or config.removeOnUse) then
    		return true
    	elseif potion.empty == item.uid then
    		return doRemoveItem(item.uid)
    	else
    		doChangeTypeItem(item.uid, item.type - 1)
    		if item.type == 1 then
    			return true
    		end
    	end
    
    	local v = getItemParent(item.uid)
    	if not v or v.uid == 0 then
    		local k = getPlayerItemById(cid, true, potion.empty)
    		if k.uid > 0 and k.type < 100 and getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight then
    			doChangeTypeItem(k.uid, k.type + 1)
    		else
    			doPlayerAddItem(cid, potion.empty, 1)
    		end
    		return true
    	end
    
    	local size = getContainerSize(v.uid)
    	for i = 0, size-1 do
    		local tmp = getContainerItem(v.uid, i)
    		if tmp.itemid == potion.empty and tmp.type < 100 then
    			return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1)
    		end
    	end
    
    	if getContainerSize(v.uid) < getContainerCap(v.uid) then
    		doAddContainerItem(v.uid, potion.empty)
    	else
    		local k = getPlayerItemById(cid, true, potion.empty)
    		if k.uid > 0 and k.type < 100 and getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight then
    			doChangeTypeItem(k.uid, k.type + 1)
    		else
    			doPlayerAddItem(cid, potion.empty, 1)
    		end
    	end
    	return true
    end
 
cyko runes will be buggy, 100x runes can only be used once, I would later add that changes in item.xml gets to normal?
 
Make script that potions dissapears instead and by the way i also got problem with when you use the pots it only stand the first stack of amount...
 
I also got problem with when you use the pots it only stands how many pots u got in the first slot not the others and why dont you make script so pots dissapears after use them? Its better :thumbup::thumbup:
 
I'm saying that the TFS Cykotitan I speak for download, the vials of potions are equal to the global, so that the runes 100x changes instead of being used 100x are being used only once
 
Back
Top