• 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!

Lua Problem Potions

Elexonic

Well-Known Member
Joined
Jun 18, 2008
Messages
1,920
Reaction score
59
I have one error in potions..when using potions, and I have the open guild channel I get on this .... ahhh! [like when you get the references]
, but only comes out or there is no default or above the player.
how I can fix this? not to go there?
Using tfs 3884.


My potions scrtip..

local config = {
removeOnUse = "no",
usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
splashable = "no",
range = -1,
realAnimation = "no", -- make text effect visible only for players in range 1x1
multiplier = {
health = 1.0,
mana = 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 = 42, health = {50, 100}}, -- small health potion
[7618] = {empty = 7636, splash = 42, health = {100, 200}}, -- health potion
[7588] = {empty = 7634, splash = 42, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
[7591] = {empty = 7635, splash = 42, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
[8473] = {empty = 7635, splash = 42, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

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

[8472] = {empty = 7635, splash = 43, 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 = getThingPosition(item.uid)
end

doDecayItem(doCreateItem(POOL, potion.splash, toPosition))
doRemoveItem(item.uid, 1)
if(not potion.empty or config.removeOnUse) then
return true
end

if(fromPosition.x ~= CONTAINER_POSITION) then
doCreateItem(potion.empty, fromPosition)
else
doPlayerAddItem(cid, potion.empty, 1)
end

return true
end

if(hasCondition(cid, CONDITION_EXHAUST)) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
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_ORANGE_1)
return true
end

if(config.range > 0 and cid ~= itemEx.uid and getDistanceBetween(getThingPosition(cid), getThingPosition(itemEx.uid)) > config.range) then
return false
end

local health = potion.health
if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.multiplier.health))) then
return false
end

local mana = potion.mana
if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.multiplier.mana))) then
return false
end

doSendMagicEffect(getThingPosition(itemEx.uid), CONST_ME_MAGIC_BLUE)
if(not config.realAnimation) then
doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
else
for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), 1, 1)) do
if(isPlayer(tid)) then
doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
end
end
end

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

if(fromPosition.x ~= CONTAINER_POSITION) then
doCreateItem(potion.empty, fromPosition)
else
doPlayerAddItem(cid, potion.empty, 1)
end

return true
end
 
Last edited:
Have this constant-

Type message

TALKTYPE_FIRST = 1
TALKTYPE_SAY = TALKTYPE_FIRST
TALKTYPE_WHISPER = 2
TALKTYPE_YELL = 3
TALKTYPE_PRIVATE_PN = 4
TALKTYPE_PRIVATE_NP = 5
TALKTYPE_PRIVATE = 6
TALKTYPE_CHANNEL_Y = 7
TALKTYPE_CHANNEL_W = 8
TALKTYPE_BROADCAST = 9
TALKTYPE_CHANNEL_RN = 10
TALKTYPE_PRIVATE_RED = 11
TALKTYPE_CHANNEL_O = 12
TALKTYPE_MONSTER_SAY = 13
TALKTYPE_MONSTER_YELL = 14
TALKTYPE_LAST = TALKTYPE_MONSTER_YELL

TALKTYPE_TYPES = {
["say"] = TALKTYPE_SAY,
["whisper"] = TALKTYPE_WHISPER,
["yell"] = TALKTYPE_YELL,
["private-playernpc"] = TALKTYPE_PRIVATE_PN,
["private-npcplayer"] = TALKTYPE_PRIVATE_NP,
["private"] = TALKTYPE_PRIVATE,
["channel-yellow"] = TALKTYPE_CHANNEL_Y,
["channel-white"] = TALKTYPE_CHANNEL_W,
["broadcast"] = TALKTYPE_BROADCAST,
["channel-red"] = TALKTYPE_CHANNEL_RN,
["private-red"] = TALKTYPE_PRIVATE_RED,
["channel-orange"] = TALKTYPE_CHANNEL_O,
["monster"] = TALKTYPE_MONSTER,
["monster-yell"] = TALKTYPE_MONSTER_YELL,

["rvr-channel"] = TALKTYPE_RVR_CHANNEL,
["rvr-answer"] = TALKTYPE_RVR_ANSWER,
["rvr-continue"] = TALKTYPE_RVR_CONTINUE,
["channel-redanonymous"] = TALKTYPE_CHANNEL_RA
}

MESSAGE_FIRST = 13
MESSAGE_EVENT_ORANGE = MESSAGE_FIRST
MESSAGE_STATUS_CONSOLE_ORANGE = 14
MESSAGE_STATUS_WARNING = 15
MESSAGE_EVENT_ADVANCE = 16
MESSAGE_EVENT_DEFAULT = 17
MESSAGE_STATUS_DEFAULT = 18
MESSAGE_INFO_DESCR = 19
MESSAGE_STATUS_SMALL = 20
MESSAGE_STATUS_CONSOLE_BLUE = 21
MESSAGE_STATUS_CONSOLE_RED = 22
MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_RED

MESSAGE_TYPES = {
["advance"] = MESSAGE_EVENT_ADVANCE,
["event"] = MESSAGE_EVENT_DEFAULT,
["white"] = MESSAGE_EVENT_DEFAULT,
["orange"] = MESSAGE_STATUS_CONSOLE_ORANGE,
["info"] = MESSAGE_INFO_DESCR,
["green"] = MESSAGE_INFO_DESCR,
["small"] = MESSAGE_STATUS_SMALL,
["blue"] = MESSAGE_STATUS_CONSOLE_BLUE,
["red"] = MESSAGE_STATUS_CONSOLE_RED,
["warning"] = MESSAGE_STATUS_WARNING,
["status"] = MESSAGE_STATUS_DEFAULT
}

COLOR_BLACK = 0
COLOR_BLUE = 5
COLOR_GREEN = 18
COLOR_LIGHTGREEN = 66
COLOR_DARKBROWN = 78
COLOR_LIGHTBLUE = 89
COLOR_DARKRED = 108
COLOR_DARKPURPLE = 112
COLOR_BROWN = 120
COLOR_GREY = 129
COLOR_TEAL = 143
COLOR_DARKPINK = 152
COLOR_PURPLE = 154
COLOR_DARKORANGE = 156
COLOR_RED = 180
COLOR_PINK = 190
COLOR_ORANGE = 192
COLOR_DARKYELLOW = 205
COLOR_YELLOW = 210
COLOR_WHITE = 215
COLOR_NONE = 255

MAPMARK_TICK = 0
MAPMARK_QUESTION = 1
MAPMARK_EXCLAMATION = 2
MAPMARK_STAR = 3
MAPMARK_CROSS = 4
MAPMARK_TEMPLE = 5
MAPMARK_KISS = 6
MAPMARK_SHOVEL = 7
MAPMARK_SWORD = 8
MAPMARK_FLAG = 9
MAPMARK_LOCK = 10
MAPMARK_BAG = 11
MAPMARK_SKULL = 12
MAPMARK_DOLLAR = 13
MAPMARK_REDNORTH = 14
MAPMARK_REDSOUTH = 15
MAPMARK_REDEAST = 16
MAPMARK_REDWEST = 17
MAPMARK_GREENNORTH = 18
MAPMARK_GREENSOUTH = 19

ITEM_TYPE_NONE = 0
ITEM_TYPE_DEPOT = 1
ITEM_TYPE_MAILBOX = 2
ITEM_TYPE_TRASHHOLDER = 3
ITEM_TYPE_CONTAINER = 4
ITEM_TYPE_DOOR = 5
ITEM_TYPE_MAGICFIELD = 6
ITEM_TYPE_TELEPORT = 7
ITEM_TYPE_BED = 8
ITEM_TYPE_KEY = 9
ITEM_TYPE_RUNE = 10

ITEM_GROUP_NONE = 0
ITEM_GROUP_GROUND = 1
ITEM_GROUP_CONTAINER = 2
ITEM_GROUP_CHARGES = 6
ITEM_GROUP_SPLASH = 11
ITEM_GROUP_FLUID = 12

CONST_PROP_BLOCKSOLID = 0
CONST_PROP_HASHEIGHT = 1
CONST_PROP_BLOCKPROJECTILE = 2
CONST_PROP_BLOCKPATHFIND = 3
CONST_PROP_ISVERTICAL = 4
CONST_PROP_ISHORIZONTAL = 5
CONST_PROP_MOVABLE = 6
CONST_PROP_BLOCKINGANDNOTMOVABLE = 7
CONST_PROP_SUPPORTHANGABLE = 8
 
under
LUA:
TALKTYPE_MONSTER_SAY = 13
try adding
LUA:
TALKTYPE_MONSTER = 13
if you're using protocol 8.61 or higher
 
Back
Top