Ir para conteúdo
Entre para seguir isso  
Mock

Poções com cargas.

Recommended Posts

Mock    32
Mock

Autor: Mock

Servidor testado: TFS 0.3.4

Versão: 2.0

 

 

A um tempo vejo pessoas comprando backpacks com 20 poçoes, lotando a cap e o espaço, essas poçoes de uma unidade só são horriveis pois impede que um jogador carrege muitas coisas em hunts longas quando se presisa de poçoes, tem que ficar jogando no chao sujando o server ocupando cada ves mais memoria. entao decidi fazer um script de poçoes de HP com cargas, até ai tudo bem nao decidi postar ficou como exclusividade do pharenight, até que por causa do TFS em todos sua INstabilidade e seus inumeros bugs tive que fechar o servidor, e como o script nao é mais util para min dicidi postar ao inves de ficar com ele mofando no meu pc, tenho certeza que farão melhor uso ^^

 

São 3 scripts naverdade, 1 é as potions em si, o outro é uma função, e a outra é uma talk com a função para criar poçoes com cargas xP.

 

1º -- potions

Vá até actions.xml delete TODAS as tags de potions de mana e HP padrões do global e insira estas:

<action itemid="7588" event="script" value="liquids/potions charges.lua"/>
<action itemid="7589" event="script" value="liquids/potions charges.lua"/>
<action itemid="7590" event="script" value="liquids/potions charges.lua"/>
<action itemid="7591" event="script" value="liquids/potions charges.lua"/>
<action itemid="8472" event="script" value="liquids/potions charges.lua"/>
<action itemid="8473" event="script" value="liquids/potions charges.lua"/>
<action itemid="7618" event="script" value="liquids/potions charges.lua"/>
<action itemid="7620" event="script" value="liquids/potions charges.lua"/>

Feito va até liquids e crie um arquivo chamado potions charges.lua e insira isto nele:

-- Script by Mock (the bear)
--- Você nao esta autorizado a:
--- Postar em nem um outro forum
--- Retirar os creditos
local storage = {
[1] = {17070,function(hmax,hmin,cid) doCreatureAddHealth(cid, math.random(hmin,hmax)) end},
[2] = {17071,function(hmax,hmin,cid) doCreatureAddMana(cid, math.random(hmin,hmax)) end},
[3] = {17072,function(hmax,hmin,cid) doCreatureAddHealth(cid, math.random(hmin[1],hmax[1])) doCreatureAddMana(cid, math.random(hmin[2],hmax[2])) end},
}
local potions = {
-- pequenas
[7620] = {lvl=0,tipo=2,hmax=101,hmin=100,vasio=7636,vocs={1,2,3,4,5,6,7,8},exaust=1},
[7618] = {lvl=0,tipo=1,hmax=100,hmin=50,vasio=7636,vocs={1,2,3,4,5,6,7,8},exaust=1},  -- HP
---medias
[7589] = {lvl=50,tipo=2,hmax=190,hmin=110,vasio=7634,vocs={1,2,3,5,6,7},exaust=1},
[7588] = {lvl=50,tipo=1,hmax=400,hmin=200,vasio=7634,vocs={3,4,7,8},exaust=1},    -- HP
-- grandes
[7591] = {lvl=80,tipo=1,hmax=800,hmin=600,vasio=7635,vocs={4,8},exaust=1}, -- hP
[7590] = {lvl=80,tipo=2,hmax=800,hmin=600,vasio=7635,vocs={1,2,5,6},exaust=1}, -- MP
[8472] = {lvl=80,tipo=3,hmax={400,190},hmin={200,110},vasio=7635,vocs={3,7},exaust=1},
--- grandonas ._.
[8473] = {lvl=130,tipo=1,hmax=1000,hmin=800,vasio=7635,vocs={4,8,0,0},exaust=1},
}
--- Script by Mock (the bear)
function onUse(cid, item, fromPosition, itemEx, toPosition)
if isPlayer(itemEx.uid) == false or potions[item.itemid] == nil or isCreature(itemEx.uid) == false then
	return FALSE
   elseif getPlayerStorageValue(itemEx.uid, storage[potions[item.itemid].tipo][1]) > os.time() and (type(getPlayerStorageValue(itemEx.uid, storage[potions[item.itemid].tipo][1])) == 'number' and getPlayerStorageValue(itemEx.uid, storage[potions[item.itemid].tipo][1]) ~= -1) then
	doPlayerSendDefaultCancel(itemEx.uid, RETURNVALUE_YOUAREEXHAUSTED)
	return TRUE
elseif getPlayerLevel(itemEx.uid) < potions[item.itemid].lvl or isInArray(potions[item.itemid].vocs,getPlayerVocation(itemEx.uid)) == FALSE then 
      doCreatureSay(itemEx.uid, "Only required vocation and level "..potions[item.itemid].lvl.." or above may drink this fluid.", TALKTYPE_ORANGE_1)
	return TRUE
end
setPlayerStorageValue(itemEx.uid,  storage[potions[item.itemid].tipo][1], os.time()+potions[item.itemid].exaust)
   storage[potions[item.itemid].tipo][2](potions[item.itemid].hmax,potions[item.itemid].hmin,itemEx.uid)
local _, _, cnt =string.find(getItemName(item.uid),'(%d+)')
if tonumber(cnt) ~= nil and tonumber(cnt) > 1 then
   local _, _, cnt =string.find(getItemName(item.uid),'(%d+)')
  setItemName(item.uid, getItemNameById(item.itemid).." x "..cnt-1)
else
   doTransformItem(item.uid,potions[item.itemid].vasio)
end
doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
return TRUE   --- Script by Mock (the bear)
end

 

Salve e pronto.

2º -- função

 

Vá até functions.lua e adcione isso:

function doAddPotWithCharges(cid,id,charge)
  local pot = doPlayerAddItem(cid, id)
  setItemName(pot, getItemNameById(id)..' x'..charge)
  return pot
end

Feito o mesmo salve e fexe.

3º -- Comando.

Este é um comando de EXEMPLO para mostrar como se faz para criar poções com cargas.

vá até talkactions.xml e adcione esta tag:

<talkaction log="yes" words="/chargepotion" event="script" access="5" value="pot.lua"/>

 

Agora crie o arquivo na pasta scripts chamado pot.lua e nele coloque isso:

 

function onSay(cid, words, param)
  local st = string.explode(param, " ",2)
  doAddPotWithCharges(cid,st[1],st[2])
  return FALSE
end

Fexe e reinice o servidor.

------------------------------------------------

 

Apos reiniciar o servidor e ter ocmpletado tudo acima entre em seu adm e fala /chargepotion 7620 100

para criar 7620 (mana potion) de 100 cargas.

Feito isso a mana potion vai se chamar:

mana potion x100, cada vez que você usar vai cair um numero, x99, x98, x97, quando tiver com 1 carga e for usado ela vai virar uma poção vazia ^^

Quais quer bugs usem o padrão de erros para ajudar.

Editado por Mock

Compartilhar este post


Link para o post
Mago Branco    0
Mago Branco

Excelente e muito bem pensado Mock, mas me explique essa citação:

 

até que por causa do TFS em todos sua estabilidade e seus inumeros bugs tive que fechar o servidor

 

Isso não tem qualquer referência para com o script correto?

Para esta função ser adicionada ao NPC, deve ser incluída a função na Lib?

Compartilhar este post


Link para o post
Atthon    0
Atthon

Meu que legal isso!

Potions com cargas xD

Muito massa :P

Compartilhar este post


Link para o post
Mock    32
Mock

@Liandro103

sim é so o TFS q e cheio de bug mesmo n tem nd aver com o script.

e a função deve tar no functions.lua, mais se quiser restringir mais pode colocala no priproprio NPC ou no proprio script da na mesma.

Compartilhar este post


Link para o post
eletross    0
eletross

Mas como coloco para vender no npc? ou na alavanca de potions que uso no me server com 10 charges cada uma de uma olhada:

 

function onUse(cid, item, frompos, item2, topos)

if item.itemid == 1945 and doPlayerRemoveMoney(cid,500) == 1 then
container = doPlayerAddItem(cid, 2001, 1)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doTransformItem(item.uid,item.itemid+1)

elseif item.itemid == 1946 and doPlayerRemoveMoney(cid,500) == 1 then
container = doPlayerAddItem(cid, 2001, 1)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doAddContainerItem(container, 7620, 7)
doTransformItem(item.uid,item.itemid-1)

else
doPlayerSendCancel(cid,"Sorry, you don't have enough money!")
end
return 1
end

 

Uso tfs 0.2.0.5

Compartilhar este post


Link para o post
Mock    32
Mock

@eletros

function onUse(cid)
if doPlayerRemoveItem(cid,500) == 1 then
  doAddPotWithCharges(cid,7620,10)
end
return TRUE
end

Compartilhar este post


Link para o post
Solkyz    0
Solkyz

mock adorei bem legal! mas o npc fica mesma coisa?

Compartilhar este post


Link para o post
keyner    0
keyner

Parece ser muito legal, estava mesmo correndo atrás disso, só que esta bugando x.x , tipo a potion não fica com 100x charges e ainda nem da pra usa :x, sabe o que deve ser isso ?

Compartilhar este post


Link para o post
leoofranca    0
leoofranca

Mock Ta Dando O Seguinte Erro : As Potions Nao Funcionam Corretamente .

Great Mana Potion Nao Funciona

Ultimate Health Não Funciona também

A Great Health Potion Heala Vida e Mana ..

e Great Spirit Potion não Funfa

As Potions Q Nao Funciona da o seguinte erro :

[31/08/2009 01:40:14] Lua Script Error: [Action Interface]

[31/08/2009 01:40:14] data/actions/scripts/liquids/potions charges.lua:onUse

[31/08/2009 01:40:14] luaGetItemDescriptions(). Item not found

[31/08/2009 01:40:14] Lua Script Error: [Action Interface]

[31/08/2009 01:40:14] data/actions/scripts/liquids/potions charges.lua:onUse

[31/08/2009 01:40:14] data/lib/function.lua:306: attempt to index a boolean value

[31/08/2009 01:40:14] stack traceback:

[31/08/2009 01:40:14] data/lib/function.lua:306: in function 'getItemName'

[31/08/2009 01:40:14] data/actions/scripts/liquids/potions charges.lua:34: in function <data/actions/scripts/liquids/potions charges.lua:22>

E Elas Estão todas infinitas com 100x não gasta nenhuma carga ao usar :(

Editado por leoofranca

Compartilhar este post


Link para o post
Mock    32
Mock

@leo.

irei testar, qual servidor você usou?

Compartilhar este post


Link para o post
leoofranca    0
leoofranca

O Servidor Q Uso Eh Styller ( tfs 0.3.5 eu acho) :X

Compartilhar este post


Link para o post
Mock    32
Mock

@leo.

Todos os erros e mais algums outros foram arrumados, obrigado pelo report ^^

Compartilhar este post


Link para o post
Kah~    0
Kah~

Nao vai solucionar todos os erros mas eu acho que tu postou uma coisa errada:

 

<action itemid="7618" event="script" value="liquids/hpotions charges.lua"/>

-

 

Arruma isso ai Mock!

 

-Gostei mas pelos comentarios parece estar com bug, quando voce arrumar eu vou usar com certeza.

Compartilhar este post


Link para o post
Mock    32
Mock

@kah.

no caso qualquer pessoa em perfeito estado mental que saiba ler o que é printado no console perceberá q tem um h ai e ira arrumar ^^

mais em fim obrigado por msotrar pois eu n vi isso.

Compartilhar este post


Link para o post
Fastzin    0
Fastzin

Bom Demais!

Compartilhar este post


Link para o post
Unsual Player    0
Unsual Player

Incrível, realmente ajuda muito as pessoas que compram 1+ de bp de hp, boa idéia.

Compartilhar este post


Link para o post
carlinhogta    0
carlinhogta

aki funciono pela metade ;x os potions agora tem cargas mais só v quando da look nao fika = runas q fika o numero emcima do item uso o tfs 0.3.1

Compartilhar este post


Link para o post
Mock    32
Mock

@carlinhogta

sim o script é assim, se vc quer igual runas tem que modificar o items.otb

Compartilhar este post


Link para o post
GioZ    0
GioZ

ótimo script mock, muito obrigado...

elas estão funcionando perfeitamente aki, mas no meu ot eu tenho tanto npc pra vender potions qto alavancas. gostaria de uma ajuda:

 

Se eu por conforme vc citou na alanvanca

 

function onUse(cid)

if doPlayerRemoveMoney(cid,500) == 1 then

doAddPotWithCharges(cid,7618,10)

end

return TRUE

end

ele irá adicionar apenas 1 potion ao player com 10 charges. Gostaria de saber como deveria fazer para por a alavanca pra qdo ela for puxada adicionar 1 backpack com 20 potions, cada potion com 100 charges.

 

e outra coisa, como eu deveria por para o npc vender corretamente as potions, como por exemplo:

 

o player fala buy 20 mana potion, então o npc vende 1 potion com 20 charges ao invés de 20 mana potion com 100 charges.

 

Tem como isso?

aguardo respostas, obrigado!

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×