Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Cóe galera, blz? 

Eu tenho um projeto de Naruto, a source/TFS 8.60.

 

Tô com um problema num script de Potion, a pot remove quando usa normalmente, até aí ta certo.

Porém, eu configuro pra só x vocações poderem usar e todas usam ;-;

Eu já testei, mudei os id, coloquei só pra uma vocação poder usar pra testar, e todas estão usando :/

 

Este é o script:

local config = { 
        removeOnUse = "yes", 
        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 = { 
        [2149] = {empty = 0, splash = 7, mana = {10000, 10000}, level = 50, vocations = {1, 2, 3, 4}, vocStr = "DANOS/SUPORTE"}
} 
 
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), 12) 
        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, 0) 
        doPlayerAddItem(cid, potion.empty, 0) 
        doPlayerRemoveItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) 
        doPlayerAddItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) 
        return TRUE 
end

 

Esta é a vocação Tsunade >> Número 100 na tabela vocations.xml

Ela continua usando mesmo sem configurar pra ela usar

image.png.9f01d26517cfa7430406932d625a6eac.png

 

Se alguém puder me ajudar eu agradeço.

 

Postado

Achei uma baita codada para algo tão simples, então, para evitar o meu trabalho, decidi pegar algum qualquer que achei por ai e modificar para o seu pedido. 

Caso queira, você pode aprimorar muito na identação, além de passar algumas das locais jogadas por ai para dentro do array "config" creio que está funcional, testei em um servidor 8.54, em casos de problemas dou suporte, só citar.

Spoiler

        function onUse(cid, item, fromPosition, itemEx, toPosition)
        ITEM = 11481
        local storage = 9590
        local wait = 1.0
        local pos1 = {x = getPlayerPosition(cid).x + 0, y = getPlayerPosition(cid).y + 0, z = getPlayerPosition(cid).z}
        local config = {
            vocations = {1, 2}
        }
        local vocation = getPlayerVocation(cid)
        
        if not (isInArray(config.vocations, vocation)) then
                doPlayerSendCancel(cid, "voce não é uma vocação suporte")
                return TRUE 
        end
        
            if fromPosition.x ~= CONTAINER_POSITION and exhaustion.get(cid, storage) == FALSE then
                REG_HEALTH = 10000
                REG_MANA = 10000
                doPlayerAddMana(cid, REG_MANA)
                doCreatureAddHealth(cid, REG_HEALTH)
                doPlayerRemoveItem(cid, ITEM, 1)
                doCreatureSay(cid, 'Aaahhh!', TALKTYPE_ORANGE_1)
                doSendMagicEffect(pos1, 12)
                exhaustion.set(cid, storage, wait)
                elseif item.itemid == ITEM and exhaustion.get(cid, storage) == FALSE then
                        REG_HEALTH = 10000
                        REG_MANA = 10000
                        doPlayerAddMana(cid, REG_MANA)
                        doCreatureAddHealth(cid, REG_HEALTH)
                        doPlayerRemoveItem(cid, ITEM, 1)
                        doCreatureSay(cid, 'Aaahhh!', TALKTYPE_ORANGE_1)
                        doSendMagicEffect(pos1, 12)
                        exhaustion.set(cid, storage, wait)
                else
                doPlayerSendCancel(cid, "Voce esta exausto.")
        end
        return TRUE
        end

 

Editado por So volto tarde
Adicionado o doRemoveItem para remover uma pot a cada uso. (veja o histórico de edições)

Postado
  • Autor
7 minutos atrás, So volto tarde disse:

Achei uma baita codada para algo tão simples, então, para evitar o meu trabalho, decidi pegar algum qualquer que achei por ai e modificar para o seu pedido. 

Caso queira, você pode aprimorar muito na identação, além de passar algumas das locais jogadas por ai para dentro do array "config" creio que está funcional, testei em um servidor 8.54, em casos de problemas dou suporte, só citar.

  Ocultar conteúdo

        function onUse(cid, item, fromPosition, itemEx, toPosition)
        ITEM = 11481
        local storage = 9590
        local wait = 1.0
        local pos1 = {x = getPlayerPosition(cid).x + 0, y = getPlayerPosition(cid).y + 0, z = getPlayerPosition(cid).z}
        local config = {
            vocations = {1, 2}
        }
        local vocation = getPlayerVocation(cid)
        
        if not (isInArray(config.vocations, vocation)) then
                doPlayerSendCancel(cid, "voce não é uma vocação suporte")
                return TRUE 
        end
        
            if fromPosition.x ~= CONTAINER_POSITION and exhaustion.get(cid, storage) == FALSE then
                REG_HEALTH = 10000
                REG_MANA = 10000
                doPlayerAddMana(cid, REG_MANA)
                doCreatureAddHealth(cid, REG_HEALTH)
                doPlayerRemoveItem(cid, ITEM, 1)
                doCreatureSay(cid, 'Aaahhh!', TALKTYPE_ORANGE_1)
                doSendMagicEffect(pos1, 12)
                exhaustion.set(cid, storage, wait)
                elseif item.itemid == ITEM and exhaustion.get(cid, storage) == FALSE then
                        REG_HEALTH = 10000
                        REG_MANA = 10000
                        doPlayerAddMana(cid, REG_MANA)
                        doCreatureAddHealth(cid, REG_HEALTH)
                        doPlayerRemoveItem(cid, ITEM, 1)
                        doCreatureSay(cid, 'Aaahhh!', TALKTYPE_ORANGE_1)
                        doSendMagicEffect(pos1, 12)
                        exhaustion.set(cid, storage, wait)
                else
                doPlayerSendCancel(cid, "Voce esta exausto.")
        end
        return TRUE
        end

 

A tsunade que é uma vocação que não pode usar, continua usando kkk

Postado
10 horas atrás, Garoto Prodigio disse:

A tsunade que é uma vocação que não pode usar, continua usando kkk

Dentro do array config, você coloca as vocações que podem usar a poção, as que não vão ficar la´dentro, não poderão usar. Se mesmo assim ainda estiver usando, vou precisar de alguma informação para tentar prosseguir, como um erro no console ou afim.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo