Jump to content

Recommended Posts

.Olá pessoal boa noite.

 

Gostaria de pedir uma ajuda a vocês

 

Estou tentando criar uma função na lib (function checkbonus_exp) de verificar o bonus de experiencia de jogadores online. Porem não estou conseguindo...

Está gerando o seguinte erro na distro.

Spoiler

[Error - Action Interface]
data/actions/scripts/bonus_exp.lua:onUse
Description:
data/lib/bonus_exp.lua:15: attempt to index global 'rate' (a nil value)
stack traceback:
        data/lib/bonus_exp.lua:15: in function <data/lib/bonus_exp.lua:12>

 

 

Segue abaixo a lib do sistema.

Spoiler

config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo
	rates = {
			{10, 1.05}, -- {quantidade de jogador online, taxa de bonus}
			{200, 1.10},
			{300, 1.15},
		},
	storage_bonus = 30303,
}


function checkbonus_exp(cid, item, frompos, item2, topos)
		if item.uid == 31470 then
			local bonus_id = getGlobalStorageValue(config_weekend_exp.storage_bonus)
			local experience = bonus_id ~= 1 and "bonus ["..((rate[2] - 1)*100).."]%" or "normal"
			local msg = " ---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia "..experience.."."
			doShowTextDialog(cid,8977,msg)
		end
		return true
	end
		

function get_bonus_weekend_exp()
	for _, rate in ipairs(config_weekend_exp.rates) do
		if  #getPlayersOnline() >= rate[1] then
			if getGlobalStorageValue(config_weekend_exp.storage_bonus) ~= 1 then
				doBroadcastMessage("[Bonus Exp Online] O servidor alcançou ["..rate[1].."] jogadores online! O bônus de exp é agora "..((rate[2] - 1)*100).."% Aproveite!")
			end
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 1) -- Bonus ativado
			return rate[2] -- Retornando a taxa de exp que deve ser adicionada
		else
			setGlobalStorageValue(config_weekend_exp.storage_bonus, -1)
		end
	end
	return 1
end

function set_bonus_weekend_exp(cid, monster_name)
	local rate_bonus = get_bonus_weekend_exp()
	local monster = getMonsterInfo(monster_name)
	if getGlobalStorageValue(config_weekend_exp.storage_bonus) == 1 then
		if getConfigValue("experienceStages") == true then
			doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada ["..rate[1].."] jogadores online. Aproveite!")
		end
	end
	return true
end

 

Alguem poderia me ajudar?

 

Utilizo OTX 8.60 - 0.4

Link to post
Share on other sites
  • 2 weeks later...
  • Assistente
config_weekend_exp = {
    dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"},
    
    rates = {
            {10, 1.05},
            {200, 1.10},
            {300, 1.15},
        },
    storage_bonus = 30303,
}


function checkbonus_exp(cid, item, frompos, item2, topos)
        if item.uid == 31470 then
            local bonus_id = getGlobalStorageValue(config_weekend_exp.storage_bonus)
            local experience = bonus_id ~= 1 and "bonus ["..((rate[2] - 1)*100).."]%" or "normal"
            local msg = " sua mensagem "..experience.."."
            doShowTextDialog(cid,8977,msg)
        end
        return true
    end
        

function get_bonus_weekend_exp()
    for _, rate in ipairs(config_weekend_exp.rates) do
        if  #getPlayersOnline() >= rate[1] then
            if getGlobalStorageValue(config_weekend_exp.storage_bonus) ~= 1 then
                doBroadcastMessage("[Bonus Exp Online] O servidor alcançou ["..rate[1].."] jogadores online! O bônus de exp é agora "..((rate[2] - 1)*100).."% Aproveite!")
            end
            setGlobalStorageValue(config_weekend_exp.storage_bonus, 1)
            return rate[2]
        else
            setGlobalStorageValue(config_weekend_exp.storage_bonus, -1)
        end
    end
    return 1
end

function set_bonus_weekend_exp(cid, monster_name)
    local rate_bonus = get_bonus_weekend_exp()
    local monster = getMonsterInfo(monster_name)
    if getGlobalStorageValue(config_weekend_exp.storage_bonus) == 1 then
        if getConfigValue("experienceStages") == true then
            doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada ["..rate[1].."] jogadores online. Aproveite!")
        end
    end
    return true
end

 

APOIE NOSSAS CAUSAS - IBEACIBEAC

SEJA UM APOIADOR E AJUDE ALGUÉM

Se você acha que meu trabalho merece uma ajuda nessa quarentena, então seja um apoiador fiel doehttps://streamlabs.com/l3k0t1

 

 CANAL YOUTUBE: https://www.youtube.com/channel/UCMP25Br519j7dD1FFEMzPgA?view_as=subscriber

Meu grupo no Discord: https://discord.gg/qMS5pm9

"Você tem um sonho? Não deixe os outros te derrubarem e lute por aquilo que você acredita" by L3K0T  

 

GENTILEZA GERA GENTILEZA

 

 

Link to post
Share on other sites
12 horas atrás, L3K0T disse:


config_weekend_exp = {
    dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"},
    
    rates = {
            {10, 1.05},
            {200, 1.10},
            {300, 1.15},
        },
    storage_bonus = 30303,
}


function checkbonus_exp(cid, item, frompos, item2, topos)
        if item.uid == 31470 then
            local bonus_id = getGlobalStorageValue(config_weekend_exp.storage_bonus)
            local experience = bonus_id ~= 1 and "bonus ["..((rate[2] - 1)*100).."]%" or "normal"
            local msg = " sua mensagem "..experience.."."
            doShowTextDialog(cid,8977,msg)
        end
        return true
    end
        

function get_bonus_weekend_exp()
    for _, rate in ipairs(config_weekend_exp.rates) do
        if  #getPlayersOnline() >= rate[1] then
            if getGlobalStorageValue(config_weekend_exp.storage_bonus) ~= 1 then
                doBroadcastMessage("[Bonus Exp Online] O servidor alcançou ["..rate[1].."] jogadores online! O bônus de exp é agora "..((rate[2] - 1)*100).."% Aproveite!")
            end
            setGlobalStorageValue(config_weekend_exp.storage_bonus, 1)
            return rate[2]
        else
            setGlobalStorageValue(config_weekend_exp.storage_bonus, -1)
        end
    end
    return 1
end

function set_bonus_weekend_exp(cid, monster_name)
    local rate_bonus = get_bonus_weekend_exp()
    local monster = getMonsterInfo(monster_name)
    if getGlobalStorageValue(config_weekend_exp.storage_bonus) == 1 then
        if getConfigValue("experienceStages") == true then
            doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada ["..rate[1].."] jogadores online. Aproveite!")
        end
    end
    return true
end

 

Não funcionou mesmo erro acima. 

 

Acho que você não entendeu, o problema está na nas linhas 13 e 14 da função feita por min (obs não sou scripter) e tentei fazer do meu jeito, porem não funcionou...

Me baseei em outro script parecido...

Já o restante do script está correto.

 

Então quando vou dar look para verificar a exp do momento ele gera o mesmo erro citado acima, por causa das linhas 13 e 14 que estão erradas...

Edited by DigoleraZica (see edit history)
Link to post
Share on other sites
  • Coordinator
-- LIB
config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo	
	rates = {
		[{50, 100}] = 1.03, -- de 50 a 100 jogadores a exp vai ser 1.03
		[{101, 299}] = 1.05, -- de 101 a 299 jogadores a exp vai ser 1.05	
		[{300, math.huge}] = 1.09 -- de 300 ou mais jogadores a exp vai ser 1.09	
	}, 	
	storage_bonus = 30303 	
}
function get_bonus_weekend_exp()
	local players = #getPlayersOnline()
	for v , r in pairs(config_weekend_exp.rates) do
		if players >= v[1] and players <= v[2] then
			return {r, v[1]}
		end
	end
	return {1.00, 0}
end


-- onRecord
function onRecord(current, old, cid)
	local new = get_bonus_weekend_exp()[1]
	local old = getGlobalStorageValue(config_weekend_exp.storage_bonus) <= 0 and 1.00 or getGlobalStorageValue(config_weekend_exp.storage_bonus)
	if old ~= new then
		if get_bonus_weekend_exp()[2] == 0 then
			doBroadcastMessage("[Bonus Exp Online] O bônus de exp foi desativado por falta de jogadores!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 1.00)
		else
			doBroadcastMessage("[Bonus Exp Online] O servidor ".. (old < new and "regrediu para" or "alcançou") .." [".. current .."] jogadores online! O bônus de exp é agora "..((new - 1)*100).."% Aproveite!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, new)
		end
	end
	return true
end


-- onKill
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) then
		local rate_bonus = get_bonus_weekend_exp()[1]
		local players = get_bonus_weekend_exp()[2]	
		if players > 0 then -- ativo	
			local monster = getMonsterInfo(getCreatureName(target))
			if getConfigValue("experienceStages") == true then
				doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada [".. players .."]+ jogadores online. Aproveite!")
			end
		end
	end 
	return true
end

-- ACTION
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if get_bonus_weekend_exp()[2] == 0 then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"O servidor não está com nenhum bonus ativo") return true
	end
	local rate = get_bonus_weekend_exp()[1]
	return doShowTextDialog(cid,8977, "---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia bonus de ["..((rate - 1)*100).."]%.")
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link to post
Share on other sites
Em 29/10/2021 em 20:58, DigoleraZica disse:

.Olá pessoal boa noite.

 

Gostaria de pedir uma ajuda a vocês

 

Estou tentando criar uma função na lib (function checkbonus_exp) de verificar o bonus de experiencia de jogadores online. Porem não estou conseguindo...

Está gerando o seguinte erro na distro.

  Ocultar conteúdo


[Error - Action Interface]
data/actions/scripts/bonus_exp.lua:onUse
Description:
data/lib/bonus_exp.lua:15: attempt to index global 'rate' (a nil value)
stack traceback:
        data/lib/bonus_exp.lua:15: in function <data/lib/bonus_exp.lua:12>

 

 

Segue abaixo a lib do sistema.

  Ocultar conteúdo


config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo
	rates = {
			{10, 1.05}, -- {quantidade de jogador online, taxa de bonus}
			{200, 1.10},
			{300, 1.15},
		},
	storage_bonus = 30303,
}


function checkbonus_exp(cid, item, frompos, item2, topos)
		if item.uid == 31470 then
			local bonus_id = getGlobalStorageValue(config_weekend_exp.storage_bonus)
			local experience = bonus_id ~= 1 and "bonus ["..((rate[2] - 1)*100).."]%" or "normal"
			local msg = " ---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia "..experience.."."
			doShowTextDialog(cid,8977,msg)
		end
		return true
	end
		

function get_bonus_weekend_exp()
	for _, rate in ipairs(config_weekend_exp.rates) do
		if  #getPlayersOnline() >= rate[1] then
			if getGlobalStorageValue(config_weekend_exp.storage_bonus) ~= 1 then
				doBroadcastMessage("[Bonus Exp Online] O servidor alcançou ["..rate[1].."] jogadores online! O bônus de exp é agora "..((rate[2] - 1)*100).."% Aproveite!")
			end
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 1) -- Bonus ativado
			return rate[2] -- Retornando a taxa de exp que deve ser adicionada
		else
			setGlobalStorageValue(config_weekend_exp.storage_bonus, -1)
		end
	end
	return 1
end

function set_bonus_weekend_exp(cid, monster_name)
	local rate_bonus = get_bonus_weekend_exp()
	local monster = getMonsterInfo(monster_name)
	if getGlobalStorageValue(config_weekend_exp.storage_bonus) == 1 then
		if getConfigValue("experienceStages") == true then
			doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada ["..rate[1].."] jogadores online. Aproveite!")
		end
	end
	return true
end

 

Alguem poderia me ajudar?

 

Utilizo OTX 8.60 - 0.4

o script e so isso, ou tem mais ?
se tiver pode passar pfv ?

Link to post
Share on other sites
7 horas atrás, Vodkart disse:

-- LIB
config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo	
	rates = {
		[{50, 100}] = 1.03, -- de 50 a 100 jogadores a exp vai ser 1.03
		[{101, 299}] = 1.05, -- de 101 a 299 jogadores a exp vai ser 1.05	
		[{300, math.huge}] = 1.09 -- de 300 ou mais jogadores a exp vai ser 1.09	
	}, 	
	storage_bonus = 30303 	
}
function get_bonus_weekend_exp()
	local players = #getPlayersOnline()
	for v , r in pairs(config_weekend_exp.rates) do
		if players >= v[1] and players <= v[2] then
			return {r, v[1]}
		end
	end
	return {1.00, 0}
end


-- onRecord
function onRecord(current, old, cid)
	local new = get_bonus_weekend_exp()[1]
	local old = getGlobalStorageValue(config_weekend_exp.storage_bonus) <= 0 and 1.00 or getGlobalStorageValue(config_weekend_exp.storage_bonus)
	if old ~= new then
		if get_bonus_weekend_exp()[2] == 0 then
			doBroadcastMessage("[Bonus Exp Online] O bônus de exp foi desativado por falta de jogadores!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 1.00)
		else
			doBroadcastMessage("[Bonus Exp Online] O servidor ".. (old < new and "regrediu para" or "alcançou") .." [".. current .."] jogadores online! O bônus de exp é agora "..((new - 1)*100).."% Aproveite!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, new)
		end
	end
	return true
end


-- onKill
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) then
		local rate_bonus = get_bonus_weekend_exp()[1]
		local players = get_bonus_weekend_exp()[2]	
		if players > 0 then -- ativo	
			local monster = getMonsterInfo(getCreatureName(target))
			if getConfigValue("experienceStages") == true then
				doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada [".. players .."]+ jogadores online. Aproveite!")
			end
		end
	end 
	return true
end

-- ACTION
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if get_bonus_weekend_exp()[2] == 0 then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"O servidor não está com nenhum bonus ativo") return true
	end
	local rate = get_bonus_weekend_exp()[1]
	return doShowTextDialog(cid,8977, "---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia bonus de ["..((rate - 1)*100).."]%.")
end

 

Não funcionou, continua com a mesma exp mesmo com o bônus ativado, registrei no login.lua tudo certinho...

Não gera erros, quando dou look mostra que o server está com o bônus de 3% porem a exp continua a mesma...

Mato o monstro notifica que está com o bônus.

Reparei que o onRecord não manda msg no broadcast quando atinge a quantidade jogadores online para ativar o bônus.

Foi registrado em globalevents com a type record tudo certinho...

 

Link to post
Share on other sites
  • Coordinator
28 minutos atrás, DigoleraZica disse:

Não funcionou, continua com a mesma exp mesmo com o bônus ativado, registrei no login.lua tudo certinho...

Não gera erros, quando dou look mostra que o server está com o bônus de 3% porem a exp continua a mesma...

Mato o monstro notifica que está com o bônus.

Reparei que o onRecord não manda msg no broadcast quando atinge a quantidade jogadores online para ativar o bônus.

Foi registrado em globalevents com a type record tudo certinho...

 

 

usa então onThink com interval de uns 20 a 30 segundos!

 

-- LIB
config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo	
	rates = {
		[{50, 100}] = 1.03, -- de 50 a 100 jogadores a exp vai ser 1.03
		[{101, 299}] = 1.05, -- de 101 a 299 jogadores a exp vai ser 1.05	
		[{300, math.huge}] = 1.09 -- de 300 ou mais jogadores a exp vai ser 1.09	
	}, 	
	storage_bonus = 30303 	
}
function get_bonus_weekend_exp()
	local players = #getPlayersOnline()
	for v , r in pairs(config_weekend_exp.rates) do
		if players >= v[1] and players <= v[2] then
			return {r, v[1]}
		end
	end
	return {1.00, 0}
end

function onServerExpMsg()
	local current = #getPlayersOnline()
	local new = get_bonus_weekend_exp()[1]
	local old = getGlobalStorageValue(config_weekend_exp.storage_bonus) <= 0 and 1.00 or getGlobalStorageValue(config_weekend_exp.storage_bonus)
	if old ~= new then
		if get_bonus_weekend_exp()[2] == 0 then
			doBroadcastMessage("[Bonus Exp Online] O bônus de exp foi desativado por falta de jogadores!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 1.00)
		else
			doBroadcastMessage("[Bonus Exp Online] O servidor ".. (old < new and "regrediu para" or "alcançou") .." [".. current .."] jogadores online! O bônus de exp é agora "..((new - 1)*100).."% Aproveite!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, new)
		end
	end
end





-- onThink
function onThink(cid, interval, lastExecution)
	onServerExpMsg()
	return true
end



-- onKill
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) then
		local rate_bonus = get_bonus_weekend_exp()[1]
		local players = get_bonus_weekend_exp()[2]	
		if players > 0 then -- ativo	
			local monster = getMonsterInfo(getCreatureName(target))
			if getConfigValue("experienceStages") == true then
				doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada [".. players .."]+ jogadores online. Aproveite!")
			end
		end
	end 
	return true
end

-- ACTION
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if get_bonus_weekend_exp()[2] == 0 then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"O servidor não está com nenhum bonus ativo") return true
	end
	local rate = get_bonus_weekend_exp()[1]
	return doShowTextDialog(cid,8977, "---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia bonus de ["..((rate - 1)*100).."]%.")
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link to post
Share on other sites
18 minutos atrás, Vodkart disse:

 

usa então onThink com interval de uns 20 a 30 segundos!

 


-- LIB
config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo	
	rates = {
		[{50, 100}] = 1.03, -- de 50 a 100 jogadores a exp vai ser 1.03
		[{101, 299}] = 1.05, -- de 101 a 299 jogadores a exp vai ser 1.05	
		[{300, math.huge}] = 1.09 -- de 300 ou mais jogadores a exp vai ser 1.09	
	}, 	
	storage_bonus = 30303 	
}
function get_bonus_weekend_exp()
	local players = #getPlayersOnline()
	for v , r in pairs(config_weekend_exp.rates) do
		if players >= v[1] and players <= v[2] then
			return {r, v[1]}
		end
	end
	return {1.00, 0}
end

function onServerExpMsg()
	local current = #getPlayersOnline()
	local new = get_bonus_weekend_exp()[1]
	local old = getGlobalStorageValue(config_weekend_exp.storage_bonus) <= 0 and 1.00 or getGlobalStorageValue(config_weekend_exp.storage_bonus)
	if old ~= new then
		if get_bonus_weekend_exp()[2] == 0 then
			doBroadcastMessage("[Bonus Exp Online] O bônus de exp foi desativado por falta de jogadores!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 1.00)
		else
			doBroadcastMessage("[Bonus Exp Online] O servidor ".. (old < new and "regrediu para" or "alcançou") .." [".. current .."] jogadores online! O bônus de exp é agora "..((new - 1)*100).."% Aproveite!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, new)
		end
	end
end





-- onThink
function onThink(cid, interval, lastExecution)
	onServerExpMsg()
	return true
end



-- onKill
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) then
		local rate_bonus = get_bonus_weekend_exp()[1]
		local players = get_bonus_weekend_exp()[2]	
		if players > 0 then -- ativo	
			local monster = getMonsterInfo(getCreatureName(target))
			if getConfigValue("experienceStages") == true then
				doPlayerAddExp(cid, (monster.experience * getExperienceStage(getPlayerLevel(cid))) * rate_bonus)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..((rate_bonus - 1)*100).."]% de bônus experiencia devido a quantidade de alcançada [".. players .."]+ jogadores online. Aproveite!")
			end
		end
	end 
	return true
end

-- ACTION
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if get_bonus_weekend_exp()[2] == 0 then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"O servidor não está com nenhum bonus ativo") return true
	end
	local rate = get_bonus_weekend_exp()[1]
	return doShowTextDialog(cid,8977, "---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia bonus de ["..((rate - 1)*100).."]%.")
end

 

Agora mostrou a msg avisando no broadcast, porem a exp continua a mesma mesmo ativando o bônus.

Link to post
Share on other sites
  • Coordinator
2 horas atrás, DigoleraZica disse:

Agora mostrou a msg avisando no broadcast, porem a exp continua a mesma mesmo ativando o bônus.

 

mudei a sua formula no onKill, testa assim:

 

 

-- LIB
config_weekend_exp = {
	dates = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}, -- Dias da semana que será ativo	
	rates = {
		[{50, 100}] = 0.10, -- de 50 a 100 jogadores a exp vai ser 10%
		[{101, 299}] = 0.30, -- de 101 a 299 jogadores a exp vai ser 30%	
		[{300, math.huge}] = 0.40 -- de 300 ou mais jogadores a exp vai ser 40%	
	}, 	
	storage_bonus = 30305	
}

function get_bonus_weekend_exp()
	local players = #getPlayersOnline()
	for v , r in pairs(config_weekend_exp.rates) do
		if players >= v[1] and players <= v[2] then
			return {r, v[1]}
		end
	end
	return {0.00, 0}
end
function onServerExpMsg()
	local current = #getPlayersOnline()
	local new = get_bonus_weekend_exp()[1]
	local old = getGlobalStorageValue(config_weekend_exp.storage_bonus) <= 0 and 0.00 or getGlobalStorageValue(config_weekend_exp.storage_bonus)
	if old ~= new then
		if get_bonus_weekend_exp()[2] == 0 then
			doBroadcastMessage("[Bonus Exp Online] O bônus de exp foi desativado por falta de jogadores!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, 0.00)
		else
			doBroadcastMessage("[Bonus Exp Online] O servidor ".. (old < new and "regrediu para" or "alcançou") .." [".. current .."] jogadores online! O bônus de exp é agora "..(new*100).."% Aproveite!")
			setGlobalStorageValue(config_weekend_exp.storage_bonus, new)
		end
	end
end





-- onThink
function onThink(cid, interval, lastExecution)
	onServerExpMsg()
	return true
end



-- onKill
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) then
		local percent = get_bonus_weekend_exp()[1]
		local players = get_bonus_weekend_exp()[2]	
		if players > 0 then -- ativo	
			local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier)
			local count = math.floor(((getMonsterInfo(string.lower(getCreatureName(target))).experience*exp)*percent))
			doPlayerAddExperience(cid, count)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Bonus Exp Online] Você está com ["..(percent*100).."]% de bônus experiencia devido a quantidade de alcançada [".. players .."]+ jogadores online. Aproveite!")
		end
	end 
	return true
end

-- ACTION
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if get_bonus_weekend_exp()[2] == 0 then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"O servidor não está com nenhum bonus ativo") return true
	end
	local rate = get_bonus_weekend_exp()[1]
	return doShowTextDialog(cid,8977, "---------[Bonus Exp Online]--------\n\n\nAtualmente o servidor está com a experiencia bonus de ["..(rate *100).."]%.")
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link to post
Share on other sites
  • 6 months later...

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.

  • Recently Browsing   0 members

    No registered users viewing this page.


  • Similar Content

    • By Lenilson
      .Qual servidor ou website você utiliza como base? 
      OTC 8.60
      Qual o motivo deste tópico? 
      Help
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By Carlinhous1996
      boa tarde galera do tk preciso da ajuda de voces PF
      é possivel usar a bolt ou arrow na mao ? e nao mais no ammo?
      hoje há muitos itens que se usa no ammo para proteger um x% de algo
      e com isso os paladins saem no prejuizo pois la usam a arrow ou bolt.
      queria colocar as arrow ou bolt em uma das maos ao inves do ammo alguem pode me ajudar pf
       
          <item id="6529" article="an" name="infernal bolt" plural="infernal bolts">
              <attribute key="weight" value="90" />
              <attribute key="slotType" value="ammo" />
              <attribute key="attack" value="63" />
              <attribute key="maxHitChance" value="90" />
              <attribute key="weaponType" value="ammunition" />
              <attribute key="ammoType" value="bolt" />
              <attribute key="shootType" value="infernalbolt" />
              <attribute key="ammoAction" value="removecount" />
       
    • By TheFrost
      Versão do Servidor: TFS - 0.4 Tipo de Script: spell local combat1 = createCombatObject() local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -4.1, 1, -4.8, 1) arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area2 = createCombatArea(arr2) setCombatArea(combat2, area2) local function onCastSpell2(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat2, parameters.var) end end local times = 3 --Quantos SQMs o jogador irá se mover. function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return true end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 2 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) local playerPos = getThingPos(cid) for i = 1, times do playerPos = getPosByDir(playerPos, getCreatureLookDirection(cid)) if not isWalkable(playerPos, i == times, i == times, i == times) then doPlayerSendCancel(cid, "Sorry, destination not possible.") return false end end local direction = getCreatureLookDirection(cid) local size = 3 local toPosition = getPositionByDirection(getThingPosition(cid), direction, size) if isWalkable(toPosition, cid) then doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) addEvent(doTeleportThing,600,cid, toPosition) doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } addEvent(onCastSpell2, 200, parameters) doCombat(cid, combat1, var) return true end  
      Boa noite, galera! Alguém poderia me ajudar. Bom, essa Spell funciona assim, eu a uso e sou teleportado a 3 Sqm a frente da onde estou olhando. Queria colocar para atravesar obstáculos específicos, tipo: Árvores. Como está ai, ela não atravessa nada, só Monstros e Players. Agradeço desde já.
    • By Lobodu
      .Qual servidor ou website você utiliza como base? 
       
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 

         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
      socorro >D
    • By netaogg244
      .Qual servidor ou website você utiliza como base? 
      Nto
      Qual o motivo deste tópico? 
      Ajuda para ligar meu ot
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
      Sim
      Nova Imagem de Bitmap.bmp
×
×
  • Create New...

Important Information

Confirmação de Termo