Ir para conteúdo

Funções getMonsterLoot...(...)


caotic

Posts Recomendados

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
end

 

Para ultilizar ela e muito facil

Alguns exemplos:

 

#getMonsterLootItens(monster)

 

 

Retorna a quantidade de loot que o monstro tem.

 

getMonsterLootItens(monster)[x]

 

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:

 

function onSay(cid, words, param, channel)
for i = 1, #getMonsterLootItens(param) do
doPlayerAddItem(cid, getMonsterLootItens(param)[i])
end
end

 

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
end

 

 

3 - 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
end

Editado por caotic
Link para o comentário
Compartilhar em outros sites

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 por caotic
Link para o comentário
Compartilhar em outros sites

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 por 20cm
Link para o comentário
Compartilhar em outros sites

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.

 

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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...