• 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 Anti PVP stair

maikons

Member
Joined
Aug 1, 2015
Messages
227
Reaction score
17
How I can do to if player use potions on stair or on doing PVP stair...
Potion dont heal, and create item
/i 2016,7
On player foot

actions/tools/liquids/potions.lua
Code:
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 = {
   [7618] = {empty = 7636, splash = 42, health = {30, 50}}, -- life fluid
   [7620] = {empty = 7636, splash = 47, mana = {40, 80}}, -- mana fluid
   
   [7588] = {empty = 7636, splash = 42, health = {30, 50}}, -- shp
   [7591] = {empty = 7636, splash = 42, health = {30, 50}}, -- ghp
   [8473] = {empty = 7636, splash = 42, health = {30, 50}}, -- uhp
   
   [7589] = {empty = 7636, splash = 47, mana = {40, 80}}, -- smp
   [7590] = {empty = 7636, splash = 47, mana = {40, 80}}, -- gmp
   [8472] = {empty = 7636, splash = 47, mana = {40, 80}}, -- pallypot
}

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_SAY)
   else
     for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), 1, 1)) do
       if(isPlayer(tid)) then
         doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_SAY, 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

I really need it, I stair PVP and others GM/players, who know to fix it?

-- Double Post Merged --

How i can get if player stay on the ladder or if player just went up/down stair?
I really want this script :(
I see it in a ot 8.6, so good
 
Last edited by a moderator:
can i use a if with stairhopDelay = 2 * 1000?

I can't use stairhopDelay to put a if to make this script?

If i cant, can i do otherwise?
 
Last edited by a moderator:
You can add the exhaustion condition also in the stair script, so people get exhausted when using a stair and can't use the potions till the exhaustion is over.

Yeah i know, but i saw it to know if its possible \/
Code:
How I can do to if player use potions on stair or on doing PVP stair...
Potion dont heal, and create item
/i 2016,7
On player foot
 
Back
Top