Ir para conteúdo
  • Cadastre-se

Posts Recomendados

.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 para o post
Compartilhar em outros sites
  • 2 weeks later...
  • Moderador
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

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros 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...

Editado por DigoleraZica (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
-- 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 para o post
Compartilhar em outros 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 para o post
Compartilhar em outros 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 para o post
Compartilhar em outros sites
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 para o post
Compartilhar em outros 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 para o post
Compartilhar em outros sites
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 para o post
Compartilhar em outros sites
  • 6 months later...

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      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. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      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. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      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. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo