Ir para conteúdo
  • 0

Loot aleatório para todos que matarem determinado monstro de evento


Pergunta

Ola,

Possuo um código aqui que ao matar determinado monstro de evento todos que atacaram ganham 20k em moedas.. o que eu gostaria de implementar é que além desses 20k cada um ganhasse também um item aleatório de uma lista de itens que eu criar..

como posso fazer essa implementação no meu código??

 

segue script abaixo

 

Citar

eventloot.lua

Spoiler

 

local config = {
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
item = {[1] = 2160}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3...
qnt = {[1] = 2 }, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3...
effect = 27, -- efeito ao matar o monstro.
}

function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, #config.item do
            doPlayerAddItem (cid, config.item, config.qnt)
        end

        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

 

 

8 respostass a esta questão

Posts Recomendados

  • 0

depois de quebrar um pouco a cabeça eu consegui adaptar a função do @Crypter com algumas coisas que eu encontrei na internet e funcionou do jeito que eu precisava..

para quem quiser, segue o código abaixo

 

Spoiler

local config = {
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
items = {2518,2519,2520}, -- items aleatorios que ira ganhar
effect = 27, -- efeito ao matar o monstro.
}
function onKill(cid, target)
local rand = math.random(1,#config.items)
local qtde = config.qnt
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, 1 do
            doPlayerAddItem(cid, config.items[rand], 1)
            doPlayerAddItem(cid, 2160, 2)
        end
        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

  • 0

 

local config = {items = {13941,13948,13969,13962,13955,13983,13976,13990,14667,14674,14681,14688,14695,14702,14709,14716,14723,14730,14742}, -- items aleatorios que ira ganharmonster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.item = {[1] = 2160}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3...qnt = {[1] = 2 }, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3...effect = 27, -- efeito ao matar o monstro.}tabela = config.itemspremios = tabela[math.random(#tabela)]function onKill(cid, target)    if isInArray(config.monster, getCreatureName(target)) then        for i = 1, #config.item do            doPlayerAddItem (cid, config.item, config.qnt)            doPlayerAddItem(cid, premios, 1)        end        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")        doSendMagicEffect (getThingPos (cid), config.effect)    endreturn trueend

 

  • 0
11 horas atrás, Crypter disse:

 

@Crypter eu implementei o código mas o player parou de granhar as duas moedas e está ganhando só o primeiro  item da minha lista de itens..e na distro me da esse erro:

[08/03/2017 18:46:40] [Error - CreatureScript Interface] 
[08/03/2017 18:46:40] data/creaturescripts/scripts/eventloot.lua:onKill
[08/03/2017 18:46:40] Description: 
[08/03/2017 18:46:40] (luaDoPlayerAddItem) Item not found
 

quando mato o monstro

Citar

local config = {

items = {13941,13948,13969,13962,13955,13983,13976,13990,14667,14674,14681,14688,14695,14702,14709,14716,14723,14730,14742}, -- items aleatorios que ira ganhar
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
item = {[1] = 2160}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3...
qnt = {[1] = 2 }, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3...
effect = 27, -- efeito ao matar o monstro.
}
tabela = config.items
premios = tabela[math.random(#tabela)]
function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, #config.item do
            doPlayerAddItem (cid, config.item, config.qnt)
            doPlayerAddItem(cid, premios, 1)
        end
        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

 

Editado por fefuxd
  • 0
18 horas atrás, fefuxd disse:

@Crypter eu implementei o código mas o player parou de granhar as duas moedas e está ganhando só o primeiro  item da minha lista de itens..e na distro me da esse erro:

[08/03/2017 18:46:40] [Error - CreatureScript Interface] 
[08/03/2017 18:46:40] data/creaturescripts/scripts/eventloot.lua:onKill
[08/03/2017 18:46:40] Description: 
[08/03/2017 18:46:40] (luaDoPlayerAddItem) Item not found
 

quando mato o monstro

 

 

local config = {

items = {13941,13948,13969,13962,13955,13983,13976,13990,14667,14674,14681,14688,14695,14702,14709,14716,14723,14730,14742}, -- items aleatorios que ira ganhar
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
item = 2160 --- moeda
qnt = 2 -- qtd
effect = 27, -- efeito ao matar o monstro.
}
tabela = config.items
premios = tabela[math.random(#tabela)]
function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, #config.item do
            doPlayerAddItem (cid, config.item, config.qnt)
            doPlayerAddItem(cid, premios, 1)
        end
        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

  • 0
9 horas atrás, Crypter disse:

 


local config = {

items = {13941,13948,13969,13962,13955,13983,13976,13990,14667,14674,14681,14688,14695,14702,14709,14716,14723,14730,14742}, -- items aleatorios que ira ganhar
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
item = 2160 --- moeda
qnt = 2 -- qtd
effect = 27, -- efeito ao matar o monstro.
}
tabela = config.items
premios = tabela[math.random(#tabela)]
function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, #config.item do
            doPlayerAddItem (cid, config.item, config.qnt)
            doPlayerAddItem(cid, premios, 1)
        end
        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

 

@Crypter coloquei exatamente como está ai.. mas o monstro morre e nada acontece.. nem erro na distro da...

alguma ideia?

  • 0
3 horas atrás, fefuxd disse:

 

@Crypter coloquei exatamente como está ai.. mas o monstro morre e nada acontece.. nem erro na distro da...

alguma ideia?

aee man tenta assim
 

local config = {

items = {13941,13948,13969,13962,13955,13983,13976,13990,14667,14674,14681,14688,14695,14702,14709,14716,14723,14730,14742}, -- items aleatorios que ira ganhar
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
item = {[1] = 2160}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3...
qnt = {[1] = 2 }, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3...
effect = 27, -- efeito ao matar o monstro.
}
tabela = config.items
premios = tabela[math.random(#tabela)]
function onKill(cid, target)
local rand = math.random(config.items)
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, #config.item do
            doPlayerAddItem (cid, config.item, config.qnt)
            doPlayerAddItem(cid, rand, 1)
        end
        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end
  • 0
8 horas atrás, wevertonvrb disse:

aee man tenta assim

 

local config = {items = {13941,13948,13969,13962,13955,13983,13976,13990,14667,14674,14681,14688,14695,14702,14709,14716,14723,14730,14742}, -- items aleatorios que ira ganharmonster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.item = {[1] = 2160}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3...qnt = {[1] = 2 }, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3...effect = 27, -- efeito ao matar o monstro.}tabela = config.itemspremios = tabela[math.random(#tabela)]function onKill(cid, target)local rand = math.random(config.items)    if isInArray(config.monster, getCreatureName(target)) then        for i = 1, #config.item do            doPlayerAddItem (cid, config.item, config.qnt)            doPlayerAddItem(cid, rand, 1)        end        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")        doSendMagicEffect (getThingPos (cid), config.effect)    endreturn trueend

 

não rolou também... 

o monstro não morre.. fica com 0 de vida vivo e continua batendo..

e da essa mensagem na distro:

 

[10/03/2017 10:33:19] [Error - CreatureScript Interface] 

[10/03/2017 10:33:19] data/creaturescripts/scripts/eventloot.lua:onKill

[10/03/2017 10:33:19] Description: 

[10/03/2017 10:33:19] data/creaturescripts/scripts/eventloot.lua:12: bad argument #1 to 'random' (number expected, got table)

[10/03/2017 10:33:19] stack traceback:

[10/03/2017 10:33:19]     [C]: in function 'random'

[10/03/2017 10:33:19]     data/creaturescripts/scripts/eventloot.lua:12: in function <data/creaturescripts/scripts/eventloot.lua:11>

Editado por fefuxd
  • 0
Em 10/03/2017 at 11:27, fefuxd disse:

depois de quebrar um pouco a cabeça eu consegui adaptar a função do @Crypter com algumas coisas que eu encontrei na internet e funcionou do jeito que eu precisava..

para quem quiser, segue o código abaixo

 

  Ocultar conteúdo

local config = {
monster = {"Kokarzinho"}, -- nome dos monstros, separado por vírgulas.
items = {2518,2519,2520}, -- items aleatorios que ira ganhar
effect = 27, -- efeito ao matar o monstro.
}
function onKill(cid, target)
local rand = math.random(1,#config.items)
local qtde = config.qnt
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, 1 do
            doPlayerAddItem(cid, config.items[rand], 1)
            doPlayerAddItem(cid, 2160, 2)
        end
        doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".")
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

O erro na função do wever é que ele só passou um argumento pro método random.

×
×
  • Criar Novo...