Jump to content

Ajuda, to com ideia preciso de ajuda!


Recommended Posts

Vamos lá, Primeiro bom dia, tarde ou noite!!

 

Minha ideia é assim, eu queria uma Pedra que quando clica no item ela refina, mais diferente.

 

Vai existir 3 tipos de Pedras:

 

Pedra Attack: dando + 30% de dano.

Pedra Defense: dando +30% de Defesa.

Pedra Life: dando +30% da sua Vida máxima.

 

Só vai poder usar em Sword! só pode colocar uma delas.

 

ai quando dar look no item mostra qual pedra estar nela. alguem me ajudar?

 

 

No caso são 3 actions, não sei se usar LIB.

Link to post
Share on other sites

  • Director

Este tópico foi movido para a seção de Suporte Otserv.

Tutoriais, lives, suporte, desafios, classificados e freelancer você encontra na Academia de Otserver.

separa10.png

 

Conheça nossos grupos:

 

academiaicone1.png                        academiaicone2.png

Academia de Mapping!        Academia de Coding!

 

academiaicone3.png

Academia de Design!

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

 

 

Precisando de Sprites?

 

 

Academia de Spriting

Academia de Spriting - Baixe Sprites gratuitas (FREE) em nosso blog!

 

 

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

« Mapas do Nolis »

 

 

 

 

Link to post
Share on other sites

  • Assistente

Olha é sempre bom posta qual servidor usa para ter mais precisão na resposta, no caso vou tenta passar como seria nas duas forma 0.4/otx e tfs 1.x/otx3, orienta e não orientada a objetos.

Você teria q fazer uma action dessa forma para cada pedra.

onUse(cid/player, item, fromPos, itemEx/target, toPos)

 

Esse são um exemplo dos parâmetros usado em action.

Então basicamente terá que adicionar um customAttribute no itemEx/Target, e mudar sua descrição para o efeito ganho. 

 

Na action referente a pedra você coloca verificação do tipo do item que ela foi usada (itemEx/Target) pra confirma se é sword:

getItemInfo(itemEx.itemid).weaponType

ou

itemType(target:getID()):getType()

 

 

as funções pra mudar descrição do item para os efeitos que quiser.

doItemSetAttribute(itemEx.uid, "description", "TODO TEXTO AQUI")

ou

target:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "TODO TEXTO AQUI")

 

 

e adicionar um customAttribute com valor para nos conseguir identificar e fazer o efeito, assim:

 

doItemSetAttribute(itemEx.uid, "buff", "attack")

ou

target:setCustomAttribute("buff", "attack")

Aqui você terá q altera os valor dependendo da pedra, "attack" por "defence" ou "life" e etc.

 

 

e por ultimo remova a pedra usada:

doRemoveItem(item.uid)

ou

item:remove()

 

Para elaborar isso deve entender logica de programação e sua funções basica, if, and, or, the, else, end, se não souber melhor começa por isso.

 

Agr que o item ja tem oq nos precisa, tem q fazer o efeito acontecer, será lá em creaturescript, já que estamos lidando com creature (player), primeiro o attack e defense:

Você terá q criar um script onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin), dessa forma:

 

0.4/otx

 em tfs 0.4/otx é onStatusChange, vou confirma uma coisa pois a maioria utiliza de forma errada essa função e ja edito.

 

tfs 1.3/otx3

function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
--
Aqui dentro colocara as verificações que irei descrever abaixo.
--
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

 

 

Primeiro precisara verificar se o item equipado do attacker é uma sword e tem attributo buff

 

pega o item,

item = getPlayerWeapon(cid)

ou

item = attacker:getSlotItem(CONST_SLOT_RIGHT) 

ou CONST_SLOT_LEFT

 

e pega o atributo a partir do "item":

getItemAttribute(item.uid, "buff")

ou

item:getCustomAttribute("buff")

 

Faça uma verificação se o atributo pego for igual "attack":

Então ira pegar o parametro primaryDamage e fazer +30% algo desse tipo:

primaryDamage = primaryDamage * (1.0 + 0.3)

 

Agora podera verificar se a creature esta com attribute "defence" na sword, usando a mesma forma de verificar "attack" apenas mudando o attacker por creature

E devera novamente altera o dano, agora em -30% :

primaryDamage = primaryDamage * (1.0 - 0.3)

 

terminando essa duas verificações ele retorna o valor do dano corretamente.

Lembre de colocar verificações de segurança como se o player existe, e se existe o attribute "buff".

 

Agora o novo script para modificar a life, sera em movement com as funções onEquip e onDeEquip.

Se chegar até esse momento acredito q entendeu a logica de como as coisa funciona, então talvez consiga elaborar sozinho se nao eu detalho para você depois.

 

Aqui vou deixa 1 exemplo de onEquip e onDeEquip de cada src, vc tera q aplica a mesma logica para verificar o item e buff, e compara com "life":

tfs 0.4/otx

tfs 1.3/otx3

Usando essas funções como base você altera o conteudo dela conforme fez no creaturescript.

E poderá aumenta a vida máxima do player quando ele equipar (onEquip) e diminuir quando ele desequipar (onDeEquip), usando

setCreatureMaxHealth(cid, health)

ou

creature:setMaxHealth(health)

 

Talvez não seja isso que queria, mas se conseguir entender e montar vai ter um avanço que precisa. Não tenha pressa, entende a logica da programação e lua, e depois olhe outros script mais simples para tenta entender como tudo é montado.

 

Qualquer duvida manda q demoro mas respondo, e se realmente tenta e não conseguir futuramente faço e posto.

 

Agora se oq queria era um pedido pronto, pode colar isso no tópico e alguém faz pra você talvez.

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Link to post
Share on other sites

8 horas atrás, Naze disse:

Olha é sempre bom posta qual servidor usa para ter mais precisão na resposta, no caso vou tenta passar como seria nas duas forma 0.4/otx e tfs 1.x/otx3, orienta e não orientada a objetos.

Você teria q fazer uma action dessa forma para cada pedra.

onUse(cid/player, item, fromPos, itemEx/target, toPos)

 

Esse são um exemplo dos parâmetros usado em action.

Então basicamente terá que adicionar um customAttribute no itemEx/Target, e mudar sua descrição para o efeito ganho. 

 

Na action referente a pedra você coloca verificação do tipo do item que ela foi usada (itemEx/Target) pra confirma se é sword:


getItemInfo(itemEx.itemid).weaponType

ou


itemType(target:getID()):getType()

 

 

as funções pra mudar descrição do item para os efeitos que quiser.


doItemSetAttribute(itemEx.uid, "description", "TODO TEXTO AQUI")

ou


target:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "TODO TEXTO AQUI")

 

 

e adicionar um customAttribute com valor para nos conseguir identificar e fazer o efeito, assim:

 


doItemSetAttribute(itemEx.uid, "buff", "attack")

ou


target:setCustomAttribute("buff", "attack")

Aqui você terá q altera os valor dependendo da pedra, "attack" por "defence" ou "life" e etc.

 

 

e por ultimo remova a pedra usada:


doRemoveItem(item.uid)

ou


item:remove()

 

Para elaborar isso deve entender logica de programação e sua funções basica, if, and, or, the, else, end, se não souber melhor começa por isso.

 

Agr que o item ja tem oq nos precisa, tem q fazer o efeito acontecer, será lá em creaturescript, já que estamos lidando com creature (player), primeiro o attack e defense:

Você terá q criar um script onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin), dessa forma:

 

0.4/otx


 em tfs 0.4/otx é onStatusChange, vou confirma uma coisa pois a maioria utiliza de forma errada essa função e ja edito.

 

tfs 1.3/otx3


function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
--
Aqui dentro colocara as verificações que irei descrever abaixo.
--
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

 

 

Primeiro precisara verificar se o item equipado do attacker é uma sword e tem attributo buff

 

pega o item,


item = getPlayerWeapon(cid)

ou


item = attacker:getSlotItem(CONST_SLOT_RIGHT) 

ou CONST_SLOT_LEFT

 

e pega o atributo a partir do "item":


getItemAttribute(item.uid, "buff")

ou


item:getCustomAttribute("buff")

 

Faça uma verificação se o atributo pego for igual "attack":

Então ira pegar o parametro primaryDamage e fazer +30% algo desse tipo:


primaryDamage = primaryDamage * (1.0 + 0.3)

 

Agora podera verificar se a creature esta com attribute "defence" na sword, usando a mesma forma de verificar "attack" apenas mudando o attacker por creature

E devera novamente altera o dano, agora em -30% :


primaryDamage = primaryDamage * (1.0 - 0.3)

 

terminando essa duas verificações ele retorna o valor do dano corretamente.

Lembre de colocar verificações de segurança como se o player existe, e se existe o attribute "buff".

 

Agora o novo script para modificar a life, sera em movement com as funções onEquip e onDeEquip.

Se chegar até esse momento acredito q entendeu a logica de como as coisa funciona, então talvez consiga elaborar sozinho se nao eu detalho para você depois.

 

Aqui vou deixa 1 exemplo de onEquip e onDeEquip de cada src, vc tera q aplica a mesma logica para verificar o item e buff, e compara com "life":

tfs 0.4/otx

tfs 1.3/otx3

Usando essas funções como base você altera o conteudo dela conforme fez no creaturescript.

E poderá aumenta a vida máxima do player quando ele equipar (onEquip) e diminuir quando ele desequipar (onDeEquip), usando


setCreatureMaxHealth(cid, health)

ou


creature:setMaxHealth(health)

 

Talvez não seja isso que queria, mas se conseguir entender e montar vai ter um avanço que precisa. Não tenha pressa, entende a logica da programação e lua, e depois olhe outros script mais simples para tenta entender como tudo é montado.

 

Qualquer duvida manda q demoro mas respondo, e se realmente tenta e não conseguir futuramente faço e posto.

 

Agora se oq queria era um pedido pronto, pode colar isso no tópico e alguém faz pra você talvez.

Entao me desculpe não falar a tfs, é 0.4, Minha ideia é uma pedra de refinar, na real sao 3 pedras uma Def, atk e Vida.

 

 

mais que elas fiquem no item: quando da look nele. e so pode ter 1 tipo dela.

Link to post
Share on other sites

  • Assistente

Como falei se quiser pronto altere para pedido e aguarde alguem quer a boa vontade e tempo de fazer, ficar floodando "UP" é contra as regras e não vai ajudar em nada. 

Estou sem PC no momento mas me parece que vc quer algo pronto então não aguarde por mim. 

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Link to post
Share on other sites

Agora, Naze disse:

Como falei se quiser pronto altere para pedido e aguarde alguem quer a boa vontade e tempo de fazer, ficar floodando "UP" é contra as regras e não vai ajudar em nada. 

Estou sem PC no momento mas me parece que vc quer algo pronto então não aguarde por mim. 

não sou muito bom com script, queria pelo menos uma base para eu mexer tlgd?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Confirmação de Termo