TO
dúvida

Chance em porcentagem de drop item.

Por Tony Araujo, 05 de nov. de 2013 em Scripts

resolvido
28
6.2k
Tony AraujoT
05 de novembro de 2013 às 17:38

Olá galera, eu gostaria de saber, como eu posso fazer para o player ter uma chance de drop items.

 

Exemplo, a armadura do meu personagem tem +5% de chance, para dropar items do monstro.

eu gostaria de saber, como eu faço essa porcentagem funcionar .

 

 

Obrigado !

SmiXS
06 de novembro de 2013 às 18:20

Talvez um onKill ou onDeath, ai faz um math.random(1, 100) e se der o 5 % adiciona no loot do monstro, morto, o item.

MaenilseM
06 de novembro de 2013 às 18:25

adcionando uma variavel, e usando um loop aonde ta a variavel de drop items, e utilizando como o SmiX disse, um math.random[1,100] se consegue fazer esse script.

Editado Novembro 6 por Maenilse

OmegaO
06 de novembro de 2013 às 19:52

Mas pra cada item de cada monstro? Ia ter que pegar o xml, a chance, o id e executar o script - pra cada item. Beeeeeeem complexo desse jeito aí, eu acho.

MaenilseM
06 de novembro de 2013 às 19:54

sim, dps faz um loop, de duas funçoes pro script, uma pra retornar pro id dos items, e outra pra retornar para a chance da porcentagem, e na funçao na qual da chance de porcentagem seria o, math.random[1,100], mas ele tem q retornar verdadeiro, pois se nao so vai cair os items, e nao vai ter a chance.

Editado Novembro 6 por Maenilse

SmiXS
06 de novembro de 2013 às 22:35

Pelo que eu entendi ele não quer pegar a chance da XML e sim para que o player tenha 5% de chance de dropar tal item, eu acho fácil de se fazer.

OmegaO
06 de novembro de 2013 às 23:02

Pelo que eu entendi ele não quer pegar a chance da XML e sim para que o player tenha 5% de chance de dropar tal item, eu acho fácil de se fazer.

 

 

Olá galera, eu gostaria de saber, como eu posso fazer para o player ter uma chance de drop items.

 

Exemplo, a armadura do meu personagem tem +5% de chance, para dropar items do monstro.

eu gostaria de saber, como eu faço essa porcentagem funcionar .

 

 

Obrigado !

 

Acho que você entendeu errado. Acho que o que ele quer é uma armadura que aumente em 5% o drop dos monstros. Se você já jogou diablo ou alguns outros MMOs, deve conhecer esse tipo de item.

SlicerS
06 de novembro de 2013 às 23:34

unico jeito de fazer isso ae exatamente do jeito q ele quer eh editando a parte das sources q pega a % de chance de dropar um item e acrecentando +5% la ;p soh q clr, isso n eh nd facil xD

OneshotO
07 de novembro de 2013 às 09:12

Ele quer criar um atributo, por exemplo, chamado "increaseDropPercent" que aumente a chance de drop de itens em todos os monstros? Isso é fácil de fazer, no monsters.cpp ou monster.cpp, se não me engano. Talvez quando tiver algum tempo livre, tentarei fazer isso.

Nu77N
07 de novembro de 2013 às 09:43

Como o Oneshot falo não é dificil, você precisa criar um attributo para o item e depois ir em monsters.cpp ( onde ele gera o loot ) e incrementar esse attributo aonde ele calcula a chance de dropar o loot...

gonorreiaswatG
07 de novembro de 2013 às 09:48

Ah sim, é realmente meio complexo pois precisará dar uma estudada nas sources para saber onde terá que alterar, porque geralmente são vários lugares.

Mas seria um script e tanto hein.

SkymagnumS
07 de novembro de 2013 às 16:08
function onDeath(cid, corpse, deathList)
 
    local _D = {
        ['Morgaroth'] = {random = getItemAttribute(getPlayerSlotItem(deathList[1], N SEI SLOT DA ARMOR).uid, "drop"), reward = {2160, 10}}
    }
 
    local m = _D[getCreatureName(cid)]
    
    if m then
        if m.random >= math.random(1, 100) then
            doAddContainerItem(corpse.uid, m.reward[1], m.reward[2] or 1)
        end
    end
 
    return true
end

pra add:

doItemSetAttribute(uid, "drop", 10)

Editado Novembro 7 por Skymagnum

MaenilseM
07 de novembro de 2013 às 17:16

UP... o slot da armor é body.

kbpauloK
08 de novembro de 2013 às 11:00

não seria mais facil um movements??? equipo muda o dropmonster do player tira volta ao padrao..

MaenilseM
08 de novembro de 2013 às 15:27

ele quer quando morrer, ter uma chance de nao dropar o item.

 

no caso tem que usar um function onDeath.