Ir para conteúdo

Script não faz mais de 2 Comparações


DeCarvalho

Posts Recomendados

Bem, estou usando um sistema que informa a taxa de xp do jogador.. quando coloco somente 2 comparações ele mostra certo, mas é necessário que se façam mais de 2 as vezes 4

 

 

 

function onSay(player, words, param)
local p = player
local s = function(p, lv)
       local k = Game.getExperienceStage(lv)
       local st = p:getStamina()
	   local pv = p:getVipDays()
	   local pp = p:getPremiumDays()
		if pp > 0 and pv > 0 and st > 2400 then 
			return k*(1.5+1.2) .. " (vip exp and stamina bonus) "
                elseif pv > 0 and st < 840 then
			return k*(0.5+0.2) .. " (penalty for stamina too low) "
		elseif pp > 0 and pv == 0 and st > 2400 then
			return k*1.5 .. " (stamina bonus) "
		elseif pv == 0 and st < 840 then
			return k*0.5 .. " (stamina penalty) "
		elseif pp > 0 and pv == 0 and st > 841 and st < 2399 then
			return k .. " (normal) "
		elseif pp > 0 and pv > 0 and st > 841 and st < 2399 then
			return k*1.2 .. " (vip bonus) "
		elseif pp == 0 and pv > 0 and st > 841 and st < 2399 then
			return k*1.2 .. " (vip bonus) "
		elseif st < 1 then
                       return 0 .. " (out of stamina) "
                end
	end

   if words == "!exp" then
     local lv = p:getLevel()
     p:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You need " .. ((50 * lv^3) - (150 * lv^2) + (400 * lv)) / 3 - p:getExperience() .. " experience more, for " .. lv+1 .. " level.")
     p:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Current rate: x" .. s(p, lv))
     return false
   end
  p:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You have to spend " .. math.ceil((p:getVocation():getRequiredManaSpent(p:getBaseMagicLevel() + 1) - p:getManaSpent()) / configManager.getNumber(configKeys.RATE_MAGIC))  .. " mana more, for next magic level.")
return false
end 

 

 

 

Quando eu uso o comando !exp e a linha tem somente duas comparações e são corretas ele informa mas quando são 3 comparações ou mais ele da erro.. no erro que o console apresenta a seguir provem de um char é vip, que não é premium e esta com stamina acima de 40 horas usando o comando !exp

Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/expmana.lua:onSay
data/talkactions/scripts/expmana.lua:32: attempt to concatenate a nil value
stack traceback:
        [C]: in function '__concat'
        data/talkactions/scripts/expmana.lua:32: in function <data/talkactions/scripts/expmana.lua:1>

Se nesta aqui

		if pp > 0 and pv > 0 and st > 2400 then 
			return k*(1.5+1.2) .. " (vip exp and stamina bonus) "

eu remover o pp > 0 and e deixar somente

		if pv > 0 and st > 2400 then 
			return k*(1.5+1.2) .. " (vip exp and stamina bonus) "

o console não apresenta erro e no cliente eu recebo a informação

22:39 Current rate: x18.9 (vip exp and stamina bonus) 

E tenho o mesmo problema com o player.lua quando a comparação é somente de 2 ele da o xp, quando adiciono a terceira comparação ele fica na ultima condição aceitável.. exemplo se stamina for maior q 40 e premium da xp, mas na condição se for premium, for vip e stamina acima de 40 ele não da E se eu colocar só se for vip e stamina acima de 40hrs ele da a xp

 

 

 

	-- Stamina modifier
	if configManager.getBoolean(configKeys.STAMINA_SYSTEM) then
		useStamina(self)

		local staminaMinutes = self:getStamina()
		if staminaMinutes > 2400 and self:isPremium() then
			exp = exp * 1.5
		elseif staminaMinutes <= 840 then
			exp = exp * 0.5
		elseif staminaMinutes > 2400 and self:isPremium() and self:isVip() then
			exp = exp * (1.5 + 1.2)
		elseif staminaMinutes <= 840 and self:isVip() then
			exp = exp * (0.5 + 0.2)
		elseif staminaMinutes < 2399 and staminaMinutes > 841 and self:isVip() then
			exp = exp * 1.2
		end
	end 

 

 

 

Alguém poderia me informar se isso é um erro no script ou o sistema não faz mais de 2 comparações?

 

Grato

 

[edit]Como não havia conseguido ajuda aqui, acabei criando topico em outro local e com as informações das respostas o problema foi sanado.. foi questão de falta de atenção.. com as alterações necessárias o sistema esta funcionando corretamente..

 

Pode marcar como resolvido.

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

  • 3 weeks later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

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