Ir para conteúdo

Só Uma Função.


koninhoo

Posts Recomendados

Bom galera, estou fazendo um script meio que "genial" e gostaria de uma função que eu não consegui fazer e nem achar algo que funcionasse.

  1. No meu script vou usar um item primeiro no segundo, fazendo com que o segundo aumente 1 no valor de defesa, alterando a defesa original de um item. Eu gostaria de uma função ou algo do tipo que verificasse (no caso seria um get) a defesa do item original, "só" (?) preciso disso. Há funções como getItemDescriptionsById(ID) que serveria se fosse getItemArmorById(ID).
  2. Ou então gostaria de uma coisa mais simples: a cada vez que usar o primeiro item no segundo aumentar 1 em algo, pode ser na descrição do item, defesa, qualquer coisa!

Espero que tenham entendido, qualquer dúvida ou outra explicação pode falar aqui!

Obrigado,

 

PS1: Eu uso The Forgotten Server 0.3 Beta.

 

Koninho~

Editado por Koninho
Link para o comentário
Compartilhar em outros sites

Olha ja tem funções assim

 

setItemAttack(uid, attack)
setItemExtraAttack(uid, extraattack)
setItemDefense(uid, defense)
setItemArmor(uid, armor)
setItemExtraDefense(uid, extradefense)
setItemAttackSpeed(uid, attackspeed)
setItemHitChance(uid, hitChance)
setItemShootRange(uid, shootRange)

 

e seus respectivos sets

getItemAttack(uid)
getItemExtraAttack(uid)
getItemDefense(uid)
getItemExtraDefense(uid)
getItemArmor(uid)
getItemAttackSpeed(uid)
getItemHitChance(uid)
getItemShootRange(uid)

 

agora para ele mudar o item para o + 1 poderia ser assim + -

 

setItemArmor(itemEx, getItemArmor(itemEx)+1)

 

No caso o itemEx é o segundo item usado...

 

 

Veja se funciona :p

Link para o comentário
Compartilhar em outros sites

Cara, funciona sim com certeza...+

 

A dúvida dele foi tipo, depois de estar com a defesa extra, na segunda vez que fosse usa verificasse que é uma item com defesa extra, e então add+ 1 extra(do que ja era extra), + e pra que essa verificação? Pq na segunda vez, vai ser uma descrição diferente, dificuldade diferente, sei-la oq ele imaginar sendo assim necessaria uma verificação se o item ja é +1 ou não...

 

Eu acho que a dúvida dele é essa :] Pelo menos é a minha ^^

Editado por Detoneitormen
Link para o comentário
Compartilhar em outros sites

@Detoneitormen

 

Opa!

 

Que eu saiba, a única forma de fazer isso apenas com Lua seria, como o próprio usuário que criou o tópico sugeriu, modificar a descrição do item para que depois seja possível fazer verificação.

 

Aí é mesmo usando getItemDescriptions(uid) e doSetItemSpecialDescription(uid, desc).

 

---

 

Edit:

 

Há ainda a possibilidade de trabalhar diretamente com a defesa extra:

 

getItemExtraDefense(uid)

setItemExtraDefense(uid, extradefense)

 

De qualquer forma, seriam gambiarras.

 

Se quiser pensar em uma por si mesmo, acesse esse ótimo tutorial do ta4e que possui todas as funções Lua da API do OTServ:

 

http://www.xtibia.com/forum/Pasta-Data-Fun...Lua-t99662.html

 

---

 

Edit 2:

 

Hehe, olha eu editando de novo.

 

Há também a possibilidade que acho que ficaria mais legal que é editando o "article" do item.

 

O que é o "article"? É o artigo do substantivo, por exemplo, "'a' wand", "'an' apple".

 

No caso você poderia fazer modificações como:

 

"'an +1' armor"

 

Sim, fica estranho e redundante se você for usar extra defense e não defense, mas seria um diferencial lega no seu OTServ.

 

E de qualquer forma é só mais uma idéia de gambiarra. As funções são:

 

getItemIdArticle(uid)

setItemIdArticle(uid)

 

Agora vou parar de editar ;D

 

Abraços.

Editado por VaL
Link para o comentário
Compartilhar em outros sites

Fala galera!

Eu fiz um script simples, só que ele retorna um erro falando que não existe o item (mas ele existe...)

function onUse(cid, item, fromPosition, itemEx, toPosition)
local config ={
adicional = 1,
desc_add = 0, --1=TRUE, 0=FALSE
phrase = "This item was enchanted by "..getCreatureName(cid).." "..getItemExtraAttack(itemEx).." times."
}
if isWeapon(itemEx) then
	if config.desc_add == 1 then
		setItemExtraAttack(itemEx, (getItemExtraAttack(itemEx)+1))
		doSetItemSpecialDescription(itemEx, phrase)
	else
		setItemExtraAttack(itemEx, (getItemExtraAttack(itemEx)+1))
	end
else
return doPlayerSendCancel(cid, "Sorry, not possible.")
end
end

Se conseguir arrumar, pode divulgar e fazer o que quiser :p

Ah, e tem que fazer um database de todos as armas, se não você vai poder dar extra attack no chão \o/

 

Abraços, Tprocheira

Editado por Tprocheira
Link para o comentário
Compartilhar em outros sites

@Val.. vlw ae + tipo..mudando a descrição ainda teria que ter + algo..sei-la e meio chato essa parte :/ Espera o dono do topico pra ve se as respotas ae respondem a pergunta dele ^^

Link para o comentário
Compartilhar em outros sites

Bom galera, obrigado pelas tentativa de ajuda aí, mas o que eu queria era uma função que cada vez que usar um primeiro item no segundo aumentasse 1 (um, número) à uma descrição. Por exemplo: Defesa + 1.

Como estou mudando a defesa de uma armadura eu estou usando setItemArmor.

Espero terem entendidos.

Obrigado,

 

Koninho~

Link para o comentário
Compartilhar em outros sites

é só fazer oras...

usando getItemExtraDefense(uid) para verificar a def e setItemExtraDefense(uid, extradefense) para add...

 

function addItemDefense(uid, quantity)

setItemExtraDefense(uid, getItemExtraDefense(uid)+quantity)

end

 

e para adicionar na descrição quanto de def tem extra:

 

doSetItemSpecialDescription(item2.uid, "Item Defense Bonus: "..getItemExtraDefense(item.2uid).."")
Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...