Quest para obter drops de itens quando o evento estiver ativo.
Foram deixados vários métodos para atribuir os itens. (Esta comentado para ser mais facil de editar)
A percentagem de drop pode ser configurada por um GM dentro do jogo ao falar com um NPC.
Espero que possa ajudar alguém.
Scuria
----------------------------------------------------
-- Evento de Rebellion2 --
----------------------------------------------------
quest EventoTeste begin
state start begin
----------------------------------------------------
-- Drop ao Matar Mobs --
----------------------------------------------------
when kill begin
if npc.is_pc() then return end -- Verifica que e Mob
if game.check_event(17, 0) ~= true then return end -- Verifica se evento esta ativo (Calendario de Eventos)
---- Se nao tiver calendario de eventos -- Para ativar >> /e scuria 1
-- if game.get_event_flag("scuria") ~= 1 then return end -- Verifica se flag de evento esta ativo (Flag ativada por 1 GM)
local level = pc.get_level() -- Ve nivel jogador
local mob_level = npc.get_level() -- ve nivel mob
local drop_allowed = false -- So para prevenir provalmente nao e necessario
if mob_level >= (level - 15) and mob_level <= (level + 25) then -- Verifica os Parametros Escolhidos
drop_allowed = true -- Se Confirmar os parametros poe verdadeiro
end
if drop_allowed then -- Se puder dropar
local chance = number(1, 10000) -- Esta 1 a 10000 para permitir mais costumizacao que o navicat nao deixa fazer 0.1 no quest
local chance_max = game.get_event_flag("scuria_drop_chance") -- Flag definida no proxima cena
---- Drop de uma lista ----
if chance <= chance_max then -- Se acertar na chance
local itens = {27101, 27102, 27103} -- Drop aleatório entre various itens
local item_id = itens[number(1, table.getn(itens))] -- Escolhe 1 item random da tabela de cima
game.drop_item_with_ownership(item_id) -- Dropa com o nome de quem matou
end
---- Drop Apenas 1 Item fixo ----
-- if chance <= chance_max then
-- game.drop_item_with_ownership(27101) -- Drop Apenas 1 Item fixo
-- end
---- Drop de um range (Ovos Pascoa) ----
-- if chance <= chance_max then
-- local drop = number(1, 20)
-- local item_id = 50159 + drop -- Drop de itens de 50160 até 50179
-- game.drop_item_with_ownership(item_id)
-- end
---- Drop de uma lista por elseif ----
-- if chance <= chance_max then
-- local drop_item = number(1,3)
-- if drop_item == 1 then
-- game.drop_item_with_ownership(27101)
-- elseif drop_item == 2 then
-- game.drop_item_with_ownership(27102)
-- elseif drop_item == 3 then
-- game.drop_item_with_ownership(27103)
-- end
-- end
---- Drop X vezes o mesmo item ----
-- if chance <= chance_max then
-- for i = 1,5 do -- Repete o processo para X itens (5 Neste Caso)
-- game.drop_item_with_ownership(27101) -- Dropa com o nome de quem matou
-- end
-- end
---- Drop X vezes de uma lista sendo random ----
-- if chance <= chance_max then
-- local drop_items = {27101, 27102, 27103, 27104} -- Drop aleatório entre various itens
-- for i = 1, 4 do -- Repete o processo para X itens (4 Neste Caso)
-- local idx = number(1, 4) -- Vai buscar o item
-- game.drop_item_with_ownership(drop_items[idx]) -- Dropa com o nome de quem matou
-- end
-- end
end
end
----------------------------------------------------
-- GM: Definir chance de Drop --
----------------------------------------------------
when 30308.chat."GM: Drop Scuria" with pc.is_gm() begin -- Verifica se e GM para mudar a chance
say_title("GM: Drop Scuria:")
say("10=0.1% - 100=1%") -- Algumas chances para ajudar a saber
say("1000=10% - 10000=100%") -- o que por para a chance que queres!
say("Definir a % de drop Scuria (0-10000):")
local current_chance = game.get_event_flag("scuria_drop_chance") or 0 -- Vai buscar a chance atual da flag se nao tiver diz 0
say_red(string.format("Chance atual: %.2f%%", current_chance / 100)) -- Mostra a chance atual
local new_chance = tonumber(input()) -- Input para escrever a chance
if new_chance == nil or new_chance < 0 or new_chance > 10000 then -- Inseriste o valor errado
say_title("GM: Drop Scuria:")
say("Valor inválido. Introduz um número entre 0 e 10000.")
else -- Inseriste o valor certo
game.set_event_flag("scuria_drop_chance", new_chance) -- Define o valor na flag
say_title("GM: Drop Scuria:")
say("Drop definido com sucesso: " .. string.format("%.2f%%", new_chance / 100)) -- Mostra a nova chance
end
end
end
end