TY

[Actions]Potion Com Cargas.

Por tyuahoi, 09 de jul. de 2010 em Actions e Talkactions

script
5.0 (1)
22
7k
tyuahoiT
09 de julho de 2010 às 12:57

Olá

 

 

Percebi Que Muita Gente Esta Procurando Tutoriais De Como COlocar Suas Potion Com Carga.

 

 

Entao, Vamos ao Trabalho.

 

1º Passo.

 

Vá Até data\actions\scripts\liquids

 

Abra O: potions.lua

 

Apague Tudo Que Aver Dentro E Cole Isso:

 

local config = {
realAnimation = true, -- make text effect visible only for players in range 1x1
healthMultiplier = 1.0,
manaMultiplier = 1.0
}

local POTIONS = {
[8704] = {charges = 100, splash = 2, health = {50, 100}}, -- small health potion
[7618] = {charges = 100, splash = 2, health = {100, 200}}, -- health potion
[7588] = {charges = 100, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 12, 11}, vocStr = "knights and paladins"}, -- strong health potion
[7591] = {charges = 100, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
[8473] = {charges = 100, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8, 12}, vocStr = "knights"}, -- ultimate health potion

[7620] = {charges = 100, splash = 7, mana = {70, 130}}, -- mana potion
[7589] = {charges = 100, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
[7590] = {charges = 100, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion

[8472] = {charges = 100, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7, 11}, 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 or not isPlayer(itemEx.uid)) then
	return false
end

if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
	return doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
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
	return doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
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)

doItemSetAttribute(item.uid, 'aid', math.max(101, item.actionid + 1))
doItemSetAttribute(item.uid, 'description', 'Charges: ' .. 100 + potion.charges - getItemAttribute(item.uid, 'aid'))
if item.actionid >= 100 + potion.charges then
	doRemoveItem(item.uid)
end
return true
end

 

Salve E Feche.

 

 

 

2º passo.

 

Va Até: data\items

 

Abra O items.xml

 

procure por:

 

- Great Mana Potion.

 

- Great Health Potion.

 

- Great Spirit Potion.

 

- Ultimate Health Potion.

 

- Strong Mana Potion.

 

- Strong Health Potion.

 

- Mana Potion.

 

- Heath potion.

 

Acresente essas Linhas Nas Potions.

 

Após:

<attribute key="weight" value="220" />

De Cada Potion.

 

Acresente Isso:

 

<attribute key="charges" value="100"/>
<attribute key="showCharges" value="1"/>

 

Caso Voçe Queira Mudar O peso Dela Basta Editar Está Linha:

 

<attribute key="weight" value="220"

220 = 2.20

 

Ainda Nao Esta 100%

 

Mais ja Ajuda.

 

 

Como vai Funcionar?

 

So Ira Aparecer as Charges Quando Voce Der Look Na Potion.

 

Estou Trabalhando para Aparecer na Potion, Assim Que Terminar Atualizo Aqui.

 

Exemplos.

 

 

Look Potion Antes De Usar:

 

You see a great mana potion that has 100 charges left.

It weighs 2.20 oz.

This potion can only be consumed by sorcerers and druids of level 80 or higher.

 

Após Usar 1 Vez:

 

You see a great mana potion that has 100 charges left.

It weighs 2.20 oz.

Charges: 99.

 

 

Espero Que tenham Gostado.

 

 

 

Abraço!

Editado Julho 9 por 1tyi

dwhfmsD
09 de julho de 2010 às 13:15

Muito bom cara, muito bom mesmo!

 

Movido para > Actions, TalkActions & MoveEvents

 

Abraços!

09 de julho de 2010 às 20:29

Muito bom :button_ok:

 

Parabens

KreuusK
09 de julho de 2010 às 23:28

1tyi - Parabens mas quer ficar com o nome no credito do meu otserv kreuus? fais isso pra mim e muito confuso entre em contato com migo Kreuusot@hotmail.com

09 de julho de 2010 às 23:33

Parabens cara, ótimo script.

Obrigado por trazer ao XTibia.

 

Abraços.

tyuahoiT
09 de julho de 2010 às 23:38

:D

 

Valeu galera Estou Trabalhando Para Deixa-lo 100%!

Editado Julho 10 por 1tyi

tioslashT
11 de julho de 2010 às 02:27

Quando eu digo que tu é de mais tu não acredita -.-'

 

kkkkkkkkkkkkkkkkkkk

 

Valeu macho, por compartilhar

murilo775M
11 de julho de 2010 às 22:04

Boa garoto estava precisando desse script teste aqui e funcionou 100%!!!

So uma coisa as pontion quando acaba a carga some da mochila, como faço para elas nao sumirem?

tyuahoiT
11 de julho de 2010 às 23:25

Use Esse Script Para QUem Kiser Que Fike COm Empty POtion Após o Uso.

 

local config = {
removeOnUse = "no",
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.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, 12, 11}, vocStr = "knights and paladins"}, -- strong health potion
[7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
[8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8, 12}, 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, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
[7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion

[8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7, 11}, 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)) 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)
	return true
end

local aidd = 
{
 min = 10901,
  max = 10911
   }
    if item.actionid < aidd.min then
     doItemSetAttribute(item.uid, "aid", aidd.min)
      elseif item.actionid >= aidd.min and item.actionid <= aidd.max then
     doItemSetAttribute(item.uid, "aid", getItemAttribute(item.uid, "aid")+1)
    elseif item.actionid >= aidd.max then
   doTransformItem(item.uid, potion.empty)
  return TRUE
 end
return true
end

 

 

Esse Script Está Com 10 Cargas Cada Potion Voçe Pode Mudar alterando essa linha:

 

max = 10911

 

 

Pronto.

 

 

Esse Script Que Acabei De CItar Nao é Meu!

 

Creditos:

 

Kiman

Editado Julho 12 por 1tyi

zani123Z
12 de julho de 2010 às 00:45

Valeu por trazer esse script..

Garanto que muita gente tava precisando..

nooberaN
14 de julho de 2010 às 22:17

sim é bom e talz

mas infelizmente fez a potion ficar infinita

(ou é alguma config minha?)

e por incrivel q pareça minha strong mana potion NAO FUNCIONA tenso :s

(mas isso é problema velho aqui)

tyuahoiT
14 de julho de 2010 às 23:09

Se Voçê fazer tudo dirreitinho passo a passo no que ta no tutorial n tem erro velho.

 

 

testei esse script no alissow,yurots baiak, real server.

lokiado0L
16 de julho de 2010 às 19:16

Funcionou aqui 100 %, muito bom, valeu brother!

 

 

Lokiado.

GabriielYuriG
17 de julho de 2010 às 12:41

Muito bom,parabens

 

Aprovado :button_ok:

 

Eu mesmo precisava dele.

masquenteM
18 de julho de 2010 às 16:28

Interessante.

 

Aprovado :button_ok: