Ir para conteúdo

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


sabrina9292

Posts Recomendados

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 por sabrina9292
Link para o comentário
Compartilhar em outros sites

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?

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...