Ir para conteúdo

Featured Replies

Postado

Estou fazendo um script e usei a seguinte variável:

 

local m = getPlayerMana(cid)

 

e depois:

 

setConditionParam(condition, CONDITION_PARAM_MANAGAIN, m/10)

 

(a syntax não está assim, só coloquei o que precisava)

 

Mas o distro indica que ele não consegue fazer operações aritméticas em um valor Boolean, então ou getPlayerMana(cid) não retorna a quantidade de mana do player em números(o que acho bem improvável) ou eu estou fazendo alguma coisa errada. REP+ para quem ajudar :)

Resolvido por xWhiteWolf

Ir para solução
  • Respostas 26
  • Visualizações 1.6k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • vc tá atribuindo um operador boolean em uma variável e fazendo aritmética. getPlayerMana(cid) não é uma função, é um atalho de função!! a função em si é a getCreatureMana(cid); Fora que você tem qu

  • local arr = {  {0, 0, 1, 1, 1, 0, 0},  {0, 1, 1, 1, 1, 1, 0},  {1, 1, 1, 1, 1, 1, 1},  {1, 1, 1, 3, 1, 1, 1},  {1, 1, 1, 1, 1, 1, 1},  {0, 1, 1, 1, 1, 1, 0},  {0, 0, 1, 1, 1, 0, 0}  } local area = c

Postado

vc tá atribuindo um operador boolean em uma variável e fazendo aritmética.

getPlayerMana(cid) não é uma função, é um atalho de função!! a função em si é a getCreatureMana(cid);
Fora que você tem que setar um or pra garantir a existencia desse valor e impedir erros... mas como? Simples: usando um or!

local m = getCreatureMana(cid) or 0

setConditionParam(condition, CONDITION_PARAM_MANAGAIN, m/10)

mas vc tem que garantir que essa atribuição de m venha antes do setConditionParam, do contrário você vai ter que fazer uma coisa muito chatinha que é editar o param da condition dentro do script pra garantir que m exista como parâmetro

Postado
  • Autor
  Em 16/10/2014 em 02:35, xWhiteWolf disse:

vc tá atribuindo um operador boolean em uma variável e fazendo aritmética.

getPlayerMana(cid) não é uma função, é um atalho de função!! a função em si é a getCreatureMana(cid);

Fora que você tem que setar um or pra garantir a existencia desse valor e impedir erros... mas como? Simples: usando um or!

local m = getCreatureMana(cid) or 0

setConditionParam(condition, CONDITION_PARAM_MANAGAIN, m/10)

mas vc tem que garantir que essa atribuição de m venha antes do setConditionParam, do contrário você vai ter que fazer uma coisa muito chatinha que é editar o param da condition dentro do script pra garantir que m exista como parâmetro

Agora retornou um valor nil :(

Olhe o script:

Mostrar conteúdo oculto
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_WATERSPLASH)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_REGENERATION)
 
local player = Player(cid)
 
local m = getCreatureMana(cid) or 0
 
local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF_SPELL, 1)
setConditionParam(condition, CONDITION_PARAM_TICKS, 1)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, m/10)
setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1)
setCombatCondition(combat, condition)
 
local area = createCombatArea({ 
{0, 0, 1, 1, 1, 0, 0}, 
{0, 1, 1, 1, 1, 1, 0}, 
{1, 1, 1, 1, 1, 1, 1}, 
{1, 1, 1, 3, 1, 1, 1}, 
{1, 1, 1, 1, 1, 1, 1}, 
{0, 1, 1, 1, 1, 1, 0}, 
{0, 0, 1, 1, 1, 0, 0}, 
})
 
setCombatArea(combat, area)
 
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Eu acho que está retornando um valor nil porque player também é um valor nil, já que a magia ainda não foi executada. Outra coisa: esta magia é a magia de um monstro, e não a de um player. A ideia seria a seguinte: O player invoca um monstro que fica curando o 10% da mana do player a cada 10 segundos(o que eu não defini no script, e sim no delay para ele usar a magia). Outra coisa é que como eu não sabia como fazer ele curar mana, fiz que o player ganha um buff de mana por 1 tick. Se não for pedir muito, peço para que arrume meu script, para que eu possa aprender com meus erros :)

Postado

exatamente oque eu havia dito amigo, você só pode usar coisas que já existam.. vc tá entando pegar a mana de um cid mas o script não sabe oque é cid.. ele vai saber qnd a magia for executada (no callback OnCastSpell).. eu não vou refazer o script pra você porque daria muito trabalho mas vou fazer melhor:

http://www.tibiaking.com/forum/topic/39219-monstro-que-enche-vida-e-mana/

aqui tem um link de uma coisa parecida que eu fiz :D espero que te ajude. A coisa mais legal desse script que eu passei o link é que ele divide a vida/mana pelos players da party, como vc só quer mana você pode remover as linhas que adicionam vida

Postado
  • Autor
  Em 16/10/2014 em 03:31, xWhiteWolf disse:

exatamente oque eu havia dito amigo, você só pode usar coisas que já existam.. vc tá entando pegar a mana de um cid mas o script não sabe oque é cid.. ele vai saber qnd a magia for executada (no callback OnCastSpell).. eu não vou refazer o script pra você porque daria muito trabalho mas vou fazer melhor:

http://www.tibiaking.com/forum/topic/39219-monstro-que-enche-vida-e-mana/

aqui tem um link de uma coisa parecida que eu fiz :D espero que te ajude. A coisa mais legal desse script que eu passei o link é que ele divide a vida/mana pelos players da party, como vc só quer mana você pode remover as linhas que adicionam vida

Eu acho que eu não expliquei muito bem :(

O player invoca um monstro que cura todas as pessoas dentro de uma certa área, porém ele não cura 10% da vida do master, e sim 10% da vida de cada um dentro da área. Além disso createCombatObject() e createConditionObject() só podem ser postas antes da função(onCastSpell) e o getCreatureMana(cid) só pode ser posta depois da função. 

 

Claro, não faça se não tiver tempo ou estiver ocupado, mas do contrário, me ensine como carregar uma coisa que está mais para frente no script, já encarei esse problema várias vezes. :)

 

"Há três caminhos para o fracasso: não ensinar o que sabe, não praticar o que ensina, e não perguntar o que ignora". (SãBeda)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo