SA

Existe Alguma Funçao Que Retorna A Descrição Do Item?

Por sabrina9292, 24 de jan. de 2012 em Archived

script
6
685
sabrina9292S
24 de janeiro de 2012 às 12:22

Bom pessoal...

 

Eu tava dando uma olhada nos scripts aqui do forum, e achei um (simples) que me chamou bastante atençao... O script dofrerety (Armazenando Mana Com Ectoplasma Container)...

 

So que achei que podia dar uma melhorada nele...

Entao pensei que ficaria melhor se o valor da mana armazenada nao fosse sempre 100, tentei fazer com que o conteiner armazenasse 20% da mana total do player, ate ai tudo bem, o problema e na hora de adicionar a mana...

Como eu posso fazer para que o script consiga ler a quantidade da mana armazenada no item (descriçao do item)?

 

O script ficou assim:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)[/font]
if item.itemid == 4863 then
  if itemEx.uid == cid then
	 if getPlayerMana(itemEx.uid) >= math.ceil(getPlayerMaxMana(itemEx.uid)*0.2) then
		doPlayerAddMana(itemEx.uid,-getPlayerMaxMana(itemEx.uid)*0.2)
		doPlayerSendCancel(itemEx.uid,"Você armazenou ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana dentro do ectoplasm container.")
		doRemoveItem(item.uid,1)
		doItemSetAttribute(doPlayerAddItem(cid, (item.itemid+1), 1), "description", "Neste recipiente, encontra-se armazenado ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana.")
		doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
	 else
		doPlayerSendCancel(cid,"Você precisa ter no minimo ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana para poder armazena-los.")
	 end
  else
	 doPlayerSendCancel(cid,"Você só pode armazenar sua própria mana.")
	 doSendMagicEffect(toPosition, CONST_ME_POFF)
  end

  elseif item.itemid == 4864 then
  doTransformItem(item.uid,4863)
  doPlayerAddMana(cid, X ) -- Aqui falta uma função que indentifica a quantidade de mana armazenada no conteiner
  doPlayerSendCancel(cid,"Mana gasta.")
  end
return true
end

 

Alguem tem uma ideia?

 

Ahhh... So pra aproveitar o topico...

Alguem sabe me dizer porque nao da pra usar este item debaixo de escadas?

Quando eu tento aparece "Você só pode armazenar sua própria mana."

 

Bom eh isso ai...

Desde ja...

Muito obrigada!!

Editado Janeiro 24 por sabrina9292

24 de janeiro de 2012 às 12:34

Mas você já editou a descrição do item, o que mais quer fazer?

sabrina9292S
24 de janeiro de 2012 às 12:48

Ahh...

Consegui, eu queria que o script lesse a descriçao do item para saber quanto de mana adicionar ao player, ficou assim:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
  if item.itemid == 4863 then
  doPrintTable(getItemDescriptions(item.uid))
  if itemEx.uid == cid then
	 if getPlayerMana(itemEx.uid) >= math.ceil(getPlayerMaxMana(itemEx.uid)*0.2) then
	    doPlayerAddMana(itemEx.uid,-getPlayerMaxMana(itemEx.uid)*0.2)
	    doPlayerSendCancel(itemEx.uid,"Você armazenou ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana dentro do ectoplasm container.")
	    doRemoveItem(item.uid,1)
	    doItemSetAttribute(doPlayerAddItem(cid, (item.itemid+1), 1), "description", "Neste recipiente, encontra-se armazenado ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana.")
	    doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
	 else
	    doPlayerSendCancel(cid,"Você precisa ter no minimo ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana para poder armazena-los.")
	 end
  else
	 doPlayerSendCancel(cid,"Você só pode armazenar sua própria mana.")
	 doSendMagicEffect(toPosition, CONST_ME_POFF)
  end

  elseif item.itemid == 4864 then
  doTransformItem(item.uid,4863)
  doPlayerAddMana(cid, string.match(getItemDescriptions(item.uid).special, "%d+"))
  end  
return true
end

 

Mas so agora fui perceber, dependendo da mana do player, sera possivel armazenar uma grande quantidade de mana e isso nao e bom... Poder healar 1000 de mana de uma vez so

So que ainda nao da pra usar debaixo de escadas, alguem sabe porque?

24 de janeiro de 2012 às 12:54

string.match(getItemDescriptions(item.uid).special, '%d+')

 

vai pegar quanto que ele salvou de mana no item.

 

se você não for usar numa action, mude o item.uid ali.

Editado Janeiro 24 por Demonbholder

bepokemonB
24 de janeiro de 2012 às 17:20

So que ainda nao da pra usar debaixo de escadas, alguem sabe porque?

 

Deve ser porque ele tá checando a pessoa na stackpos errada. Tente assim:

pidPos = toPosition
pidPos.stackpos = 253
pid = getThingFromPos(cidPos)
if itemEx.uid == pid then

sabrina9292S
25 de janeiro de 2012 às 02:22

@Byerne

 

Acho que nao deu certo nao =/

Não sei se fiz da forma correta, mas no final meu script ficou assim:

function onUse(cid, item, fromPosition, itemEx, toPosition)
  if item.itemid == 4863 then
  pidPos = toPosition
  pidPos.stackpos = 253
  pid = getThingFromPos(cid)
  if itemEx.uid == pid then
	 if getPlayerMana(itemEx.uid) >= math.ceil(getPlayerMaxMana(itemEx.uid)*0.2) then
	    doPlayerAddMana(itemEx.uid,-getPlayerMaxMana(itemEx.uid)*0.2)
	    doPlayerSendCancel(itemEx.uid,"Você armazenou ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana dentro do ectoplasm container.")
	    doRemoveItem(item.uid,1)
	    doItemSetAttribute(doPlayerAddItem(cid, (item.itemid+1), 1), "description", "Neste recipiente, encontra-se armazenado ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana.")
	    doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
	 else
	    doPlayerSendCancel(cid,"Você precisa ter no minimo ".. math.floor(getPlayerMaxMana(itemEx.uid)*0.2) .." pontos de mana para poder armazena-los.")
	 end
  else
	 doPlayerSendCancel(cid,"Você só pode armazenar sua própria mana.")
	 doSendMagicEffect(toPosition, CONST_ME_POFF)
  end

  elseif item.itemid == 4864 then
[color=#ff0000]		 local condition = createConditionObject(CONDITION_REGENERATION)
	 setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
	 setConditionParam(condition, CONDITION_PARAM_BUFF, true)
	 setConditionParam(condition, CONDITION_PARAM_TICKS, 100 * 1000)
	 setConditionParam(condition, CONDITION_PARAM_MANAGAIN, (string.match(getItemDescriptions(item.uid).special, "%d+"))*0.01)
	 setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1000)	
	 doAddCondition(cid, condition)[/color]
	 doRemoveItem(item.uid,1)
	 doPlayerAddItem(cid,4863,1)
  end  
return true
end

 

So tenho mais uma duvida relacionada ao script...

A parte de vermelho, eu copiei de um script que tinha em um ot que um amigo meu me passou, sera que alguem pode me explica-la detalhadamente (principalmente esta parte "setConditionParam(condition, CONDITION_PARAM_SUBID, 1)" ou me passar o link de um tutorial