SK
sistema

[AVATAR] Water Pouch System.

Por Skymagnum, 10 de abr. de 2013 em Mods, funções e outros

script
5.0 (3)
32
4.2k
SkymagnumS
10 de abril de 2013 às 23:15

/data/actions/scripts crie um arquivo .lua e renomeie para waterRefill.lua e adicione isso dentro:

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local _ = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
local slot = getPlayerSlotItem(cid, CONST_SLOTARROW)
local water = getWater(slot.uid)
local refil = 2 -- % of reffil

  local add = water == 99 and 1 or refil

  if getWater(slot.uid) ~= 100 then
       if isInArray(_, itemEx.itemid) then
            setWaterPouchPercent(slot.uid, add)
       end
          else
       doPlayerSendCancel(cid, "Your pouch is full")
  end
  return true
end

 

 

em actions.xml adicione essa linha:

<action itemid = "ID DA POUCH" event = "script" value="waterRefill.lua"/>


 

Agora como fazer para coloca na spell, vá em /data/spells, vá no arquivo da spell desejado, procure o onCastSpell no arquivo, e mude para este.

 

function onCastSpell(cid, var)

local slot = getPlayerSlotItem(cid, CONST_SLOTARROW)
local waters = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
        local water = true
        local p = 2 -- quantos porcentos de agua vai usar

        if getPlayerStorageValue(cid, 372872) < 1 then
           setWaterPouchPercent(slot.uid, 100)
           setPlayerStorageValue(cid, 372872, 1)
       end


        if slot.uid < 1 then
           return true
       end

        if getWaterInArea(waters, getThingPos(cid), 5, 5) then
           water = false
        end


     if getWater(slot.uid) < p then
           doPlayerSendTextMessage(cid, 27, "Sorry, you don't have any water") return true
     end

     if water then
        setWaterPouchPercent(slot.uid, getWater(slot.uid) - p)
        doPlayerSendTextMessage(cid, 27, "You use " .. p .. "% of your pouch now have" ..  getWater(slot.uid))
            else
        doPlayerSendTextMessage(cid, 27, "Using ambient water.")
     end
     return doCombat(cid, var)
end

 


 

PARTE MUITO IMPORTANTE, NÃO COMETA ERROS.

Vá em /data/libs/050-function e adicione essas três funções:

 

function setWaterPouchPercent(pouch, percent)

doSetItemAttribute(pouch, "water", percent)
  doSetItemAttribute(pouch, "description", getWater(pouch) .. "% of water in this pouch.")
end

function getWater(pouch)

return getItemAttribute(pouch, "water")
end

function getWaterInArea(ItemIds, pos, rangex, rangey) -- dalvo

for itemId in pairs(ItemIds) do
	for x = -rangex, rangex do
		for y = -rangey, rangey do
			local posi = {x = pos.x + x, y = pos.y + y, z = pos.z}
			local item = getTileItemById(posi, itemId)
			if item.uid > 0 and not (x == 0 and y == 0) then
				return true
			end
		end
	end
end
return false
end

 


 

Qualquer erro postem no tópico.

Editado Abril 22 por Skymagnum

drakylucasD
11 de abril de 2013 às 14:59

acho q está na area errada..

é na area de servidores derivados que vc tem q postar esse script ^^

 

e PS: tente explicar aos usuarios como fazer nas spells que for usar o pouch (é facil explicar, se quiser pode copiar o do pedido la q eu deixei em vermelho)

rohfagundesR
13 de abril de 2013 às 16:40

erro ao dar look

 

 

[Error - CreatureScript Interface]

data/creaturescripts/scripts/waterpouch.lua:onLook

Description:

data/lib/050-function.lua:441: attempt to index local 'pouch' (a number value)

stack traceback:

data/lib/050-function.lua:441: in function 'getWater'

data/creaturescripts/scripts/waterpouch.lua:5: in function (data/creaturescripts/scripts/waterpouch.lua:1)

SkymagnumS
13 de abril de 2013 às 19:28

@TOPICO ATUALIZADO

Editado Abril 13 por Skymagnum

rohfagundesR
13 de abril de 2013 às 20:35

agora o servidor ta parando de responder logo q fica online '-'

SkymagnumS
13 de abril de 2013 às 23:29

Então você fez algo de errado.

rohfagundesR
14 de abril de 2013 às 09:37

cara vc testou?

pq aqui da erro quando abre

da erro quando vai da look

da erro em tudo '-'

1157571
14 de abril de 2013 às 09:41

Mano, eu to com dúvida na parte do "--FOR LOOK HOW WATER YOUR PUNCH HAVE" e "FOR REFFIL THE PUNCH" lá no Pastebin...

Eu não sei onde adiciona esses dois scripts, e não sei se devem ter um nome específico... ou tem q por no msm script? pq pra mim ficaria estranho na função look ele abastecer o wp.

 

 

@edit1:

VocÊ testo isso antes de postar? Poderia Melhorar o tutorial de instalação do script (imagens , detalhe, até mesmo dê nome para os arquivos para não causar confusão,e dê exemplo de um id que pode ser tratado como wp) estou vendo que não sou apenas eu que não esta conseguindo instalar este sistema.

 

@edit2: ta dando erro nesse script, eu tentei adicionar ela no actions como vc n especificou:

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition) -- part's of DrakyLukas

  local _ = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824,4825}
  local slot = getPlayerSlotItem(cid, CONST_SLOTARROW)
  local water = getWater(slot.uid)
  local refil = 2 -- % of reffil

  if getWater(slot.uid) ~= 100 then
 if isInArray(_, itemEx.itemid)
	 setWaterPouchPercent(slot.uid, water == 99 and water + 1 or water + refil)
	 end
		else
	 doPlayerSendCancel(cid, "Your pounch is full")
  return true
end

 

[Error - LuaScriptInterface::loadFile] data/actions/scripts/waterpouch.lua:10: '
then' expected near 'setWaterPouchPercent'
[Warning - Event::loadScript] Cannot load script (data/actions/scripts/waterpouc
h.lua)
data/actions/scripts/waterpouch.lua:10: 'then' expected near 'setWaterPouchPerce
nt'

Editado Abril 14 por FilipeMAN

SkymagnumS
14 de abril de 2013 às 20:05

Pronto, agora ensina como instalar.

rohfagundesR
14 de abril de 2013 às 21:10

esta dando os mesmos erros

volto a pergunta vc testou?

 

pq ainda tem uns erros de digito

tipo ) a mais na spell

 

function sem t

no function.lua

SkymagnumS
14 de abril de 2013 às 21:16

Mas lembrando a pouch deve estar no slot do arrow, você deixou ela lá?

rohfagundesR
15 de abril de 2013 às 07:16

simm cara eu deixei o problema

é q ta dando erro no actions, creaturescript, function.lua e na spell

por isso to perguntando se vc testo

pvjfP
15 de abril de 2013 às 13:07

No action xml é o id dela cheia ou vazia? Posta uns print do sistema aew .

 

Vlw

 

@EDIT

 

No script do oncastspell mais especificamente nesta linha:

 

local water_pounch = 2184

 

O id que esta ali seria o do Water pouch?

 

@EDIT2

 

Erro:

 

[Error - LuaScriptInterface::loadFile] data/actions/scripts/waterRefill.lua:18:
'then' expected near 'setWaterPouchPercent'
[Warning - Event::loadScript] Cannot load script (data/actions/scripts/waterRefi
ll.lua)
data/actions/scripts/waterRefill.lua:18: 'then' expected near 'setWaterPouchPerc
ent'

Editado Abril 15 por KikimDaPadaria

rohfagundesR
16 de abril de 2013 às 14:22

com alguem esse sistema funcionou?

se sim o q vc fez pra ele funcionar?

SkymagnumS
16 de abril de 2013 às 15:06

É o mesmo id, cheio e vazio, e um attribute que conta quanto de água têm, achei 2 erros e já corrigi, então copiem denovo, a parte do look foi retirada pois o action já fazia isso.