Ir para conteúdo

Featured Replies

Postado
  • Autor
17 horas atrás, Vodkart disse:

na lib tenta deixar assim:

 


monsters_boosteds = { -- Configuracao dos monstros que irão ter exp e loot aumentados
	[1] = {monster_name = "Dwarf", exp = 0.05, loot = 7},
	[2] = {monster_name = "Goblin", exp = 0.05, loot = 5},
	[3] = {monster_name = "Orc", exp = 0.25, loot = 15},
    [4] = {monster_name = "Dwarf Soldier", exp = 0.35, loot = 10},
    --[5] = {monster_name = "NOME DO MONSTRO", exp = "PORCENTAGEM DE EXP", loot = "PORCENTAGEM DO LOOT"},
}

 

 

o onKill

 


function onKill(cid, target, damage, flags)
	if not (isMonster(target)) then
		return true
	end
	if (string.lower(getCreatureName(target)) == string.lower(getGlobalStorageValue(monster_name_backup))) then
	local percent = tonumber(getGlobalStorageValue(74813))
	local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier)
	local amount = math.floor(((getMonsterInfo(string.lower(getCreatureName(target))).experience*exp)*percent))
	doPlayerAddExperience(cid, amount)
	addLoot(getCreaturePosition(target), getCreatureName(target), {})
	end
	return true
end
function addLoot(position, name, ignoredList)
    local check = false
    for i = 0, 255 do
        position.stackpos = i
        corpse = getTileThingByPos(position)
        if corpse.uid > 0 and isCorpse(corpse.uid) then
            check = true 
            break
        end
    end
	if check == true then
        local newRate = (1 + (getGlobalStorageValue(monster_loot_backup)/100)) * getConfigValue("rateLoot")
        local mainbp = doCreateItemEx(1987, 1)
        local monsterLoot = getMonsterLootList(name)
        for i, loot in pairs(monsterLoot) do
            if math.random(1, 100000) <= newRate * loot.chance then 
                if #ignoredList > 0 then
                    if (not isInArray(ignoredList, loot.id)) then
                        doAddContainerItem(mainbp, loot.id, loot.countmax and math.random(1, loot.countmax) or 1)
                    end
                else
                    doAddContainerItem(mainbp, loot.id, loot.countmax and math.random(1, loot.countmax) or 1)
                end
            end
        end
        doAddContainerItemEx(corpse.uid, mainbp)  
    end
end

 

 

OBS: O EVENTO TEM QUE SER COMEÇADO DE NOVO PARA ATUALIZAR A EXP NA STORAGE, ou seja, testa só depois que dar o boost exp

cara, em partes, deu certo... porém, ta me dando o bonus conforme o valor total de exp do monstro, que é o que ta me retornando, porém meu server é por rates... Então o valor do bonus ta me dando muito além do que o valor que eu realmente estou ganhando... Ali onde retorna o valor de exp que o monstro deu, tem algum meio de retornar não o valor total de exp que ele da, e sim o valor que o player está ganhando conforme os rates dele?

@Vodkart

Retornando para dizer como foi resolvido... Usei as funções que voce ensinou, e fiz algumas config locais a mais para eu conseguir chegar no resultado que eu queria, que era apenas o bonus de 30% em cima do valor de EXP que o monstro me daria sem rate extra algum, nem o bonus stamina, nem bonus vip, nem bonus castle... Apenas o valor ganho conforme o rate do player, somando 30% a mais... Provavelmente você saberia fazer de uma forma mais simples mas fiz assim alterando as informações que você me deu...

function onKill(cid, target, damage, flags)
	if not (isMonster(target)) then
		return true
	end
	if (string.lower(getCreatureName(target)) == string.lower(getGlobalStorageValue(monster_name_backup))) then
	local percent = tonumber(getGlobalStorageValue(74813))
	local rate = tonumber(getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier))
	local amount = math.floor((getMonsterInfo(string.lower(getCreatureName(target))).experience))
	local bonus = tonumber((amount / 100 * rate)*100)
	local final = math.floor(bonus / 100 * percent)
	
	doPlayerAddExpEx(cid, final)
	addLoot(getCreaturePosition(target), getCreatureName(target), {})
	end
	return true
	
end

PS: Usando a função doPlayerAddExperience não estava recebendo nada de bonus, mas como a função que eu queria usar ja era a AddExpEx, assim fiz, e então ficou como eu queria, só o que vou tentar agora, mas vou tentar estudar para fazer solo e assim aprender, é colocar para que todos os monstros da mesma raça dêem o Bonus, ( Frost Dragon, Castle Frost Dragon, Donate Frost, etc.. ), inclusive vou usar as informações do seu mod Simple Task, que eu tambem uso, para pegar as funções e configs necessárias... Por hora me ajudou 500% ! Tu é o melhor cara, rep+ e topico encerrado já com a solução que eu usei somada a sua ajuda.

  • Respostas 5
  • Visualizações 638
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • na lib tenta deixar assim:   monsters_boosteds = { -- Configuracao dos monstros que irão ter exp e loot aumentados [1] = {monster_name = "Dwarf", exp = 0.05, loot = 7}, [2] = {monster_name

  • cara, em partes, deu certo... porém, ta me dando o bonus conforme o valor total de exp do monstro, que é o que ta me retornando, porém meu server é por rates... Então o valor do bonus ta me dando muit

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