• 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 [1.2] having trouble accessing subid with getCondition

Cornwallis

Member
Joined
Jan 3, 2010
Messages
480
Reaction score
16
I'm trying to make it so that I can access the sub-id part of this function, but it's not seeming to work.
Code:
creature:getCondition(conditionType[, conditionId = CONDITIONID_COMBAT[, subId = 0]])
This is what mine looks like:
Code:
player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, 1)
Am I using it correctly?
Any questions please ask.
 
I can't figure out why this isn't working as intended. I want to charge so to speak, you use it 3 times and the effect is fully charged, but what is happening is after the first use it says it's fully charged. About 20 revisions or so ago I was able to make it stack twice, but I was doing something with the conditionid rather than the sub id, which prompted me to add more conditionid's but if I can get away with sub-id's I'd rather go that route. Here's my long messy script:
Code:
local bullseyeCondition = Condition(CONDITION_ATTRIBUTES)
bullseyeCondition:setParameter(CONDITION_PARAM_TICKS, 60000)
bullseyeCondition:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 125)
bullseyeCondition:setParameter(CONDITION_SUBID, 1)
bullseyeCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local mastermindCondition = Condition(CONDITION_ATTRIBUTES)
mastermindCondition:setParameter(CONDITION_PARAM_TICKS, 60000)
mastermindCondition:setParameter(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 125)
mastermindCondition:setParameter(CONDITION_SUBID, 1)
mastermindCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local berserkCondition = Condition(CONDITION_ATTRIBUTES)
berserkCondition:setParameter(CONDITION_PARAM_TICKS, 60000)
berserkCondition:setParameter(CONDITION_SUBID, 1)
berserkCondition:setParameter(CONDITION_PARAM_SKILL_MELEEPERCENT, 125)
berserkCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local bullseyeCondition2 = Condition(CONDITION_ATTRIBUTES)
bullseyeCondition2:setParameter(CONDITION_PARAM_TICKS, 60000)
bullseyeCondition2:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 125)
bullseyeCondition2:setParameter(CONDITION_SUBID, 2)
bullseyeCondition2:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local mastermindCondition2 = Condition(CONDITION_ATTRIBUTES)
mastermindCondition2:setParameter(CONDITION_PARAM_TICKS, 60000)
mastermindCondition2:setParameter(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 125)
mastermindCondition2:setParameter(CONDITION_SUBID, 2)
mastermindCondition2:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local berserkCondition2 = Condition(CONDITION_ATTRIBUTES)
berserkCondition2:setParameter(CONDITION_PARAM_TICKS, 60000)
berserkCondition2:setParameter(CONDITION_SUBID, 2)
berserkCondition2:setParameter(CONDITION_PARAM_SKILL_MELEEPERCENT, 125)
berserkCondition2:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local bullseyeCondition3 = Condition(CONDITION_ATTRIBUTES)
bullseyeCondition3:setParameter(CONDITION_PARAM_TICKS, 60000)
bullseyeCondition3:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 125)
bullseyeCondition3:setParameter(CONDITION_SUBID, 3)
bullseyeCondition3:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local mastermindCondition3 = Condition(CONDITION_ATTRIBUTES)
mastermindCondition3:setParameter(CONDITION_PARAM_TICKS, 60000)
mastermindCondition3:setParameter(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 125)
mastermindCondition3:setParameter(CONDITION_SUBID, 3)
mastermindCondition3:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local berserkCondition3 = Condition(CONDITION_ATTRIBUTES)
berserkCondition3:setParameter(CONDITION_PARAM_TICKS, 60000)
berserkCondition3:setParameter(CONDITION_SUBID, 3)
berserkCondition3:setParameter(CONDITION_PARAM_SKILL_MELEEPERCENT, 125)
berserkCondition3:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local t = {
[7439] = {berserkCondition, berserkCondition2, berserkCondition3},
[7440] = {mastermindCondition, mastermindCondition2, mastermindCondition3},
[7443] = {bullseyeCondition, bullseyeCondition2, bullseyeCondition3}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local condition = player:getCondition(CONDITION_ATTRIBUTES)
    for k, v in pairs(t) do
        if item.itemid == k then
            if not condition then
                player:addCondition(v[1])
                doSendMagicEffect(getCreaturePosition(player), 22)
                doCreatureSay(player, "AH!", TALKTYPE_MONSTER_SAY)
                item:remove(1)
                return true
            elseif condition:getSubId() == 1 then
                player:addCondition(v[2])
                doSendMagicEffect(getCreaturePosition(player), 22)
                doCreatureSay(player, "AAHH!!", TALKTYPE_MONSTER_SAY)
                item:remove(1)
                return true
            elseif condition:getSubId() == 2 then
                player:addCondition(v[3])
                doSendMagicEffect(getCreaturePosition(player), 22)
                doCreatureSay(player, "AAAHHH!!!", TALKTYPE_MONSTER_SAY)
                item:remove(1)
                return true
            else
                doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "You cannot use this potion while the effect is fully charged.")
                return false
            end
        end
    end
return true
end

EDIT:
This works with conditionid, but I used combat and ammo, I'm not sure how that'd effect it but I'd rather just use sub-id's, any ideas?
Code:
local bullseyeCondition = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
bullseyeCondition:setParameter(CONDITION_PARAM_TICKS, 60000)
bullseyeCondition:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 125)
bullseyeCondition:setParameter(CONDITION_SUBID, 1)
bullseyeCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local mastermindCondition = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
mastermindCondition:setParameter(CONDITION_PARAM_TICKS, 60000)
mastermindCondition:setParameter(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 125)
mastermindCondition:setParameter(CONDITION_SUBID, 1)
mastermindCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local berserkCondition = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
berserkCondition:setParameter(CONDITION_PARAM_TICKS, 60000)
berserkCondition:setParameter(CONDITION_SUBID, 1)
berserkCondition:setParameter(CONDITION_PARAM_SKILL_MELEEPERCENT, 125)
berserkCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local bullseyeCondition2 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT)
bullseyeCondition2:setParameter(CONDITION_PARAM_TICKS, 60000)
bullseyeCondition2:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 125)
bullseyeCondition2:setParameter(CONDITION_SUBID, 2)
bullseyeCondition2:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local mastermindCondition2 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT)
mastermindCondition2:setParameter(CONDITION_PARAM_TICKS, 60000)
mastermindCondition2:setParameter(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 125)
mastermindCondition2:setParameter(CONDITION_SUBID, 2)
mastermindCondition2:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local berserkCondition2 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT)
berserkCondition2:setParameter(CONDITION_PARAM_TICKS, 60000)
berserkCondition2:setParameter(CONDITION_SUBID, 2)
berserkCondition2:setParameter(CONDITION_PARAM_SKILL_MELEEPERCENT, 125)
berserkCondition2:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local bullseyeCondition3 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_AMMO)
bullseyeCondition3:setParameter(CONDITION_PARAM_TICKS, 60000)
bullseyeCondition3:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 125)
bullseyeCondition3:setParameter(CONDITION_SUBID, 3)
bullseyeCondition3:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local mastermindCondition3 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_AMMO)
mastermindCondition3:setParameter(CONDITION_PARAM_TICKS, 60000)
mastermindCondition3:setParameter(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 125)
mastermindCondition3:setParameter(CONDITION_SUBID, 3)
mastermindCondition3:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)

local berserkCondition3 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_AMMO)
berserkCondition3:setParameter(CONDITION_PARAM_TICKS, 60000)
berserkCondition3:setParameter(CONDITION_SUBID, 3)
berserkCondition3:setParameter(CONDITION_PARAM_SKILL_MELEEPERCENT, 125)
berserkCondition3:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local t = {
[7439] = {berserkCondition, berserkCondition2, berserkCondition3},
[7440] = {mastermindCondition, mastermindCondition2, mastermindCondition3},
[7443] = {bullseyeCondition, bullseyeCondition2, bullseyeCondition3}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    for k, v in pairs(t) do
        if item.itemid == k then
            if not player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT) then
                player:addCondition(v[1])
                doSendMagicEffect(getCreaturePosition(player), 22)
                doCreatureSay(player, "AH!", TALKTYPE_MONSTER_SAY)
                item:remove(1)
                return true
            elseif player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT) and not player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT) then
                player:addCondition(v[2])
                doSendMagicEffect(getCreaturePosition(player), 22)
                doCreatureSay(player, "AAHH!!", TALKTYPE_MONSTER_SAY)
                item:remove(1)
                return true
            elseif player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT) and not player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_AMMO) then
                player:addCondition(v[3])
                doSendMagicEffect(getCreaturePosition(player), 22)
                doCreatureSay(player, "AAAHHH!!!", TALKTYPE_MONSTER_SAY)
                item:remove(1)
                return true
            else
                doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "You cannot use this potion while the effect is fully charged.")
                return false
            end
        end
    end
return true
end
 
Last edited:
Back
Top