Postado Janeiro 5, 2021 4 anos 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 Se alguém puder me ajudar eu agradeço.
Postado Janeiro 6, 2021 4 anos 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 Janeiro 6, 2021 4 anos por So volto tarde Adicionado o doRemoveItem para remover uma pot a cada uso. (veja o histórico de edições)
Postado Janeiro 6, 2021 4 anos 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 Janeiro 6, 2021 4 anos 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.