Ir para conteúdo
  • 0

Potion Nao Fica Infinita


TendoTensei

Pergunta

tenho um servidor baiak 8.60 tfs 0.4 so q nele as potions nao fica infinita quando estaão na minha bag so quando nao estão oq posso fazer para ficar infinito e dexa na bag normal

 

ta ae meu potions.lua

 

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 = 8704, splash = 2, health = {70, 100}}, -- small health potion
    [7618] = {empty = 7618, splash = 2, health = {200, 250}}, -- health potion
    [7588] = {empty = 7588, splash = 2, health = {300, 350}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
    [7591] = {empty = 7591, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
    [8473] = {empty = 8473, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion
    [7620] = {empty = 7620, splash = 7, mana = {70, 150}}, -- mana potion
    [7589] = {empty = 7589, splash = 7, mana = {130, 220}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
    [7590] = {empty = 7590, splash = 7, mana = {400, 600}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion
    [8472] = {empty = 8472, splash = 3, health = {300, 500}, mana = {150, 250}, 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, 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

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Se ai esta deste jeito, e voce ja colocou

removeOnUse = "no",

 

tenta ai:

 

Eu acho que voce teria que colocar no config.lua

 

    removeRuneCharges = false

 

nao sei muito bem, testa lá!

Link para o comentário
Compartilhar em outros sites

  • 0

nem funciono

 

tem um fluids.lua aqui tbm nao sei se ele interfere tbm

 

-- fluids by atolon --
 function onUse(cid, item, frompos, item2, topos)
  -- itemid means that is a creature
  if item2.itemid == 1 then
if item.type == 0 then
 doPlayerSendCancel(cid,"It is empty.")
else
 if item2.uid == cid then
  doChangeTypeItem(item.uid,0)
  if item.type == 2 then
   doPlayerSay(cid,"it was blood....",16)
  elseif item.type == 4 then
   doPlayerSay(cid,"it was slime!!",16)
									  doSendMagicEffect(topos,8)
  elseif item.type == 3 then
doPlayerSay(cid,"hit! hit! fresh beer!!",16)
doPlayerSetDrunk(cid,60*1000)
  elseif item.type == 5 then
   doPlayerSay(cid,"it was fresh lemonade!!",16)
  elseif item.type == 11 then
   doPlayerSay(cid,"arrg is oil!!",16)
  elseif item.type == 15 then
doPlayerSay(cid,"hit! hit! is wine",16)
doPlayerSetDrunk(cid,60*1000)
  elseif item.type == 6 then
   doPlayerSay(cid,"ohh is milk!",16)
  elseif item.type == 10 then
   doPlayerAddHealth(cid,100)
									  doSendMagicEffect(topos,12)
  elseif item.type == 13 then
   doPlayerSay(cid,"arrg is urine!",16)
  elseif item.type == 7 then
							 random_number = math.random(30,100)
 doPlayerAddMana(cid,random_number)
									doSendMagicEffect(topos,12)
 doPlayerSay(cid,"Aaaaah...",1)
  elseif item.type == 19 then
   doPlayerSay(cid,"arrg is mud!",16)
  elseif item.type == 26 then
   doPlayerSay(cid,"arrg hot on my mouth!",16)
									  doSendMagicEffect(topos,6)
  elseif item.type == 28 then
   doPlayerSay(cid,"arrg swamp water!",16)
									  doSendMagicEffect(topos,8)
  else
   doPlayerSay(cid,"Gulp.",1)
  end
 else
  splash = doCreateItem(2833,item.type,topos)
  doChangeTypeItem(item.uid,0)
  doDecayItem(splash)
 end
end
 --water--
  elseif (item2.itemid >= 601 and item2.itemid <= 604) or
(item2.itemid >= 729 and item2.itemid <= 740) then
doChangeTypeItem(item.uid,1)
 --mud--
  elseif item2.itemid == 103 then
doChangeTypeItem(item.uid,19)
 --lava--
  elseif (item2.itemid >= 709 and item2.itemid < 712) or item2.itemid == 2119 then
doChangeTypeItem(item.uid,26)
 --mud--
  elseif (item2.itemid >= 351 and item2.itemid <= 355) then
doChangeTypeItem(item.uid,19)
 --swamp--
  elseif (item2.itemid >= 713 and item2.itemid <= 716) then
doChangeTypeItem(item.uid,28)
 --cask--
  elseif item2.itemid == 2488 then
doChangeTypeItem(item.uid,1)  --water--
  elseif item2.itemid == 2489 then
doChangeTypeItem(item.uid,3)  --beer--
  elseif item2.itemid == 2490 then
doChangeTypeItem(item.uid,15) --wine--
 --end cask--
 -- Blood/swamp in decayto corpse --NO FINISH--
  elseif item2.itemid > 3922 and item2.itemid < 4327 then
doChangeTypeItem(item.uid,2)
 -- End Blood/swamp in decayto corpse --NO FINISH--
  else
if item.type == 0 then
 doPlayerSendCancel(cid,"It is empty.")
else
 splash = doCreateItem(2833,item.type,topos)
 doChangeTypeItem(item.uid,0)
 doDecayItem(splash)
end
  end
  return 1
 end

Editado por TendoTensei
Link para o comentário
Compartilhar em outros sites

  • 0

Coatic, como pode perceber eles postaram praticamente juntos.

Essa script já não está "infinita"? Pois quando ele usa, ela vira empty, e os id das emptys estão o das potions, logo ira ficar em um ciclo sem fim.

 

_____________________________________________

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
}[/font]
[font=arial,helvetica,sans-serif]config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)[/font]
[font=arial,helvetica,sans-serif]local POTIONS = {
	    [8704] = {empty = 8704, splash = 2, health = {70, 100}}, -- small health potion
	    [7618] = {empty = 7618, splash = 2, health = {200, 250}}, -- health potion
	    [7588] = {empty = 7588, splash = 2, health = {300, 350}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
	    [7591] = {empty = 7591, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
	    [8473] = {empty = 8473, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion
	    [7620] = {empty = 7620, splash = 7, mana = {70, 150}}, -- mana potion
	    [7589] = {empty = 7589, splash = 7, mana = {130, 220}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
	    [7590] = {empty = 7590, splash = 7, mana = {400, 600}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion
	    [8472] = {empty = 8472, splash = 3, health = {300, 500}, mana = {150, 250}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion
 }[/font]
[font=arial,helvetica,sans-serif]local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))[/font]
[font=arial,helvetica,sans-serif]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
	    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
Editado por Vilden
Link para o comentário
Compartilhar em outros sites

  • 0

Aí cara, tenta fazer assim.. substitua seu potions.lua por esse:

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))
		    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
end

Vlw aí!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...