bem legal a função.
tenho uma dúvida: o item tem gold por exemplo tem uma porcentagem de sair tipo 3,6 e 8 golds, ele dá apenas 1 gold ou ele tem chance de sair uma quantidade igual matar o monstro?
info
Grupo: Lorde
Registrado: 17/01/09
Posts: 2.1k
Reputação: +395
Char no Tibia: Adra Sata

bem legal a função.
tenho uma dúvida: o item tem gold por exemplo tem uma porcentagem de sair tipo 3,6 e 8 golds, ele dá apenas 1 gold ou ele tem chance de sair uma quantidade igual matar o monstro?
Legal, cara, legal mesmo.
function getMonsterLootList(name) local monster = getMonsterInfo(name) return monster and monster.loot or false end
Abraços, cara, abraços.
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Legal, cara, legal mesmo.
function getMonsterLootList(name) local monster = getMonsterInfo(name) return monster and monster.loot or false end
Abraços, cara, abraços.
Eu ja sabia,
Só que lembrei depois de fazer o script.
Então resolvi postar assim mesmo.
E também já existe a função
getMonsterAttackSpells(name)
getMonsterHealingSpells(name)
getMonsterLootList(name)
getMonsterSummonList(name)
Fiz mais 2 funções para o loot do monstro
Abraços.
Abraços.
Editado Dezembro 21 por caotic
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

fecha o arquivo usando io.close
Sinceramente? A função é boa mas tem algo muito ruim.
Se eu quiser printar todos os loots do monstro, do demon por exemplo, eu tenho que usar:
for x,i in pairs(getMonsterLootItens("demons/demon")) do
print(i)
end
Note que eu tive que acessar a paste ("demons/")
Porque seu script só checa os monstros da pasta monster, e poucos monstros ficam só na pasta monster.
Editado Dezembro 30 por 20cm
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Sinceramente? A função é boa mas tem algo muito ruim.
Se eu quiser printar todos os loots do monstro, do demon por exemplo, eu tenho que usar:
for x,i in pairs(getMonsterLootItens("demons/demon")) do print(i) endNote que eu tive que acessar a paste ("demons/")
Porque seu script só checa os monstros da pasta monster, e poucos monstros ficam só na pasta monster.
Problema resolvido
function getDirMonsterByNameMonster(name)
t = {}
local monster = io.open("data/monster/monsters.xml", "r")
for i in monster:read("*a"):gmatch('<monster name="'..tostring(name)..'" file="(.-)"/>') do
table.insert(t, tostring(i))
end
return t[1] or 0
end
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have
Tudo bem galera?
Resolvi fazer 3 funções para manipular loots de monstro
Vamos a elas:
1 - getMonsterLootItens(monster)
Ela retorna os itens dos loot de uns
function getMonsterLootItens(monster) t = {} local monster = io.open("data/monster/"..tostring(monster)..".xml", "r") for i in monster:read("*a"):gmatch('id="(.-)"') do table.insert(t, tonumber(i)) end return t endPara ultilizar ela e muito facil
Alguns exemplos:
Retorna a quantidade de loot que o monstro tem.
Retorna o id do loot de acordo com a posição X da localização do id no xml.
Neste script abaixo ele vai adicionar todos os itens do loot do monstro no player:
2- Função getMonsterLootCount(monster, item)
Ela retorna a quantidade maximo que o item pode cair do monstro ou seja ela retorna a "countmax = X"
function getMonsterLootCount(monster, item) t = {} local monster = io.open("data/monster/"..tostring(monster)..".xml", "r") for i in monster:read("*a"):gmatch('id="'..item..'" countmax="(.-)"') do table.insert(t, tonumber(i)) end return t[1] or 1 end3 - getMonsterLootChance(monster, item)
Ela retorna a chance do item do loot do monstro cair.
function getMonsterLootChance(monster, item) t = {} local monster = io.open("data/monster/"..tostring(monster)..".xml", "r") for i in monster:read("*a"):gmatch('<item id="'..item..'"(.-)/><') do local chance = tonumber(i:match('chance="(.-)"')) table.insert(t, chance) end return t[1] or 0 endEditado Dezembro 22 por caotic