Doidin 275 Postado Julho 31, 2010 Share Postado Julho 31, 2010 (editado) Fala galerinha XTibiana, Bom eu tenho meu server Odirion World, e nele eu estava tendo um grande problema nas potions pois quando usava ela os vials se espalhava, pela backpack inteira fazendo que ela fique cheia rapidinho, né?! Então depois de quebrar minha cabeça pensando em várias funções para botar no script eu consegui e o resultado saiu muito simples... Vamos deixa de lero lero e ir logo ao script que muita gente procura aqui no XTibia: Author: TFS Team and Doidin.Version: 1.1 Test in: TFS 0.3.6 Vá até a pasta actions/scripts/liquids e procure o arquivo potions.lua e apague tudo e bote isso lá: local config = { removeOnUse = "no", 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 = { [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } 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), CONST_ME_MAGIC_BLUE) 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, 1) doPlayerAddItem(cid, potion.empty, 1) doPlayerRemoveItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) doPlayerAddItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) return TRUE end Agora volta a pasta actions e abra o arquivo actions.xml e caso a tag das suas potions esteja separadas junte para apenas uma, assim: <action itemid="7588-7591;8472-8473;7618;7620;8704" event="script" value="liquids/potions.lua"/> Bom galerinha depois de quebrar muito a minha cabeça pra chegar nesse resultado ridículo eu resolvi compartilhar com vocês, é isso ae, abraços... Editado Julho 31, 2010 por Doidin Link para o comentário https://xtibia.com/forum/topic/138505-action-potions-86/ Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Julho 31, 2010 Share Postado Julho 31, 2010 muito bom cara está de parabens coisas simples fazem grande diferença ficou ótimo REP + abraços Link para o comentário https://xtibia.com/forum/topic/138505-action-potions-86/#findComment-914963 Compartilhar em outros sites More sharing options...
Renato Ribeiro 87 Postado Julho 31, 2010 Share Postado Julho 31, 2010 (editado) "AHHHH, NÃO TEM FUNÇÃO PRA ISSO NÃO TEM COMO FAZER ISSO... É IMPOSSÍVEL FAZER ISSO.." Viu, é só botar esse mini cérebro pra funcionar, sua safada! AUHEAUHEAUEAH O Segredo: doPlayerAddItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) pelo menos eu acho AUSHSUASHAUSHAU Boa muleque, abraços! Editado Julho 31, 2010 por RenatoRibeiro Link para o comentário https://xtibia.com/forum/topic/138505-action-potions-86/#findComment-914985 Compartilhar em outros sites More sharing options...
Posts Recomendados