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

Nie leczy, nie kończy się

mldo

New Member
Joined
Jun 29, 2014
Messages
36
Reaction score
0
mam problem z kodem, nie daje HP ani Many, nie wywala błedu:
Lua:
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 = {
    [7591] = {vocations = {4, 8}, vocStr = 'knights', -- great health potion
        minhp = 'level * 2.2 + maglv * 3.3',
        maxhp = 'level * 2.75 + maglv * 4.4'},

    [7590] = {vocations = {1, 2, 5, 6}, vocStr = 'sorcerers and druids', -- great mana potion
        minmana = 'level * 1.4 + maglv * 3',
        maxmana = 'level * 1.5 + maglv * 4'},

    [8472] = {vocations = {3, 7}, vocStr = 'paladins', -- great spirit potion
        minhp = 'level * 1.3 + maglv * 2.5',
        maxhp = 'level * 1.6 + maglv * 3.5',
        minmana = 'level * 1.1 + maglv * 2.2',
        maxmana = 'level * 1.5 + maglv * 2.8'}
}

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(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

        if(config.range > 0 and cid ~= itemEx.uid and getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(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, "Mmmmh...", TALKTYPE_ORANGE_1)
        else
                for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), 1, 1)) do
                        if(isPlayer(tid)) then
                                doCreatureSay(itemEx.uid, "Mmmmh...", TALKTYPE_ORANGE_1, false, tid)
                        end
                end
        end

        doAddCondition(cid, exhaust)
        doRemoveItem(item.uid, 0)
        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, 0)
        end

        return true
end

TFS 0.4 Tibia 8.6
 
Last edited:
W każdym potionie brakuje tablicy mana i health. Dla przykładu:
Code:
local POTIONS = {
      [7591] = {vocations = {4, 8}, vocStr = 'knights', -- great health potion
             health = {100, 150},
             mana = {50, 75}

Gdzie health 100 to minimalna wartość a 150 to maksimum jakie będzie dawać dany potion.

A to co teraz masz, te minmana i maxmana to w ogóle nie jest przystosowane do tego skryptu.
 
Tak wygląda tekst oryginalny skryptu, ja jednak chce żeby był mnożnik od poziomu, dzięki buchaLL
 
Back
Top