AD

Drop Rate Code

Por Addict, 19 de fev. de 2006 em Linguagens de Programação

tibia
script
16
5.6k
AddictA
19 de fevereiro de 2006 às 01:55

Créditos: Arcoz

Tenho um servidor RPG (ServerTibia) para protocolo 7.6 no qual a drop rate é 2x, ou seja, a achanse de cair itens é duas vezes mais facil

doque no Tibia.

Como eu teria muito trabalho editando monstro por monstro por monstro a chanse de cair itens, resolvi criar esse code.

Vi o quando ele foi importante para mim e vou publica-lo para os programadores e desenvolvedores que prescisam de dele ou de algo

semelhante.

Em luascript.h

|---- Em class LuaScript

|----|---- Depois de:

 

public:LuaScript();~LuaScript();

 

Adicione:

 

#ifdef ARC_DROP_RATEint DROP_RATE;#endif //ARC_DROP_RATE

 

Em luascript.cpp

|---- Em int LuaScript::OpenFile(const char *filename)

|----|---- Depois de:

 

if (lua_dofile(luaState, filename)) return false;

 

Adicione:

 

#ifdef ARC_DROP_RATE   DROP_RATE = getGlobalNumber("droprate",1);#endif //ARC_DROP_RATE

 

Em monsters.cpp

|---- Em Item* MonsterType::createLootItem(const LootBlock& lootBlock)

|----|---- Subistitue:

 

Item* tmpItem = NULL;if(Item::items[lootBlock.id].stackable == true){ unsigned long randvalue = Monster::getRandom(); unsigned long n = 1; if(randvalue < lootBlock.chance1){     if(randvalue < lootBlock.chancemax){   n = lootBlock.countmax;  }  else{   //if chancemax < randvalue < chance1   n = (unsigned char)(randvalue % lootBlock.countmax + 1);  }  tmpItem = Item::CreateItem(lootBlock.id, (unsigned short)n); }}else{ if(Monster::getRandom() < lootBlock.chance1){  tmpItem = Item::CreateItem(lootBlock.id); }}return tmpItem;

 

Por:

 

Item* tmpItem = NULL;if(Item::items[lootBlock.id].stackable == true){ unsigned long randvalue = Monster::getRandom(); unsigned long n = 1;#ifdef ARC_DROP_RATE if(randvalue < (lootBlock.chance1 * g_config.DROP_RATE)){     if(randvalue < lootBlock.chancemax * g_config.DROP_RATE){#else if(randvalue < lootBlock.chance1){     if(randvalue < lootBlock.chancemax){#endif //ARC_DROP_RATE   n = lootBlock.countmax;  }  else{   //if chancemax < randvalue < chance1   n = (unsigned char)(randvalue % lootBlock.countmax + 1);  }  tmpItem = Item::CreateItem(lootBlock.id, (unsigned short)n); }}else{#ifdef ARC_DROP_RATE if(Monster::getRandom() < lootBlock.chance1 * g_config.DROP_RATE){#else if(Monster::getRandom() < lootBlock.chance1){#endif //ARC_DROP_RATE  tmpItem = Item::CreateItem(lootBlock.id); }}return tmpItem;

 

Caso queria que a quantidade dos itens contaveis também seja multiplicada:

|----|---- Subistiute:

 

tmpItem = Item::CreateItem(lootBlock.id, (unsigned short)n);

 

Por:

 

#ifdef ARC_DROP_RATE  tmpItem = Item::CreateItem(lootBlock.id, (unsigned short)n * g_config.DROP_RATE);#else  tmpItem = Item::CreateItem(lootBlock.id, (unsigned short)n);#endif //ARC_DROP_RATE

 

Vá em Projeto > Opções do Projeto > Parametros, Em Compilador C++ Adicione:

 

-DARC_DROP_RATE

 

Recompile todos os códigos fontes.

Agora no config.lua, basta adicionar:

[/code]-- drop rate multiplier (how much faster the itens will drop from monsters)

droprate = 1

Quando quiser que a rate de drop seja 2x, coloque:

-- drop rate multiplier (how much faster the itens will drop from monsters)

droprate = 2

e assim por diante.PS. Como os itens tem chanse de cair de 0,001% até 100,000%, caso queria que a drop rate seja de 100% (todos os itens caiam) coloque:

-- drop rate multiplier (how much faster the itens will drop from monsters)

droprate = 100000


Mas lembresse que se o container do corpo do monstro lotar de itens, ele não coloca mais, ou seja, se um mosntro tem espaço para 8 itens,

mas ele tem chanse de derrubar 9 itens, esse ultimo item não vai aparecer. Para arrumar isso, crie mais de uma "loot bag" nele ou edite o

arquivo items.otb para adicionar mais espaços no conteiner do corpo.

ProglinP
24 de fevereiro de 2006 às 13:34

Kra...... esse seu código ROX ;)

Tks

ImperiI
24 de fevereiro de 2006 às 14:51

Adorei cara, muito show.

Uma vez eu fiz, editei todo meu Serv ;/

Agora quem precisa tem auqi.

Adorei mesmo

F

U

I

1 mês depois...
AddictA
10 de março de 2006 às 17:14

Que bom que o code ajudou, Sempre que der estarei postando mais codes.

EtohE
10 de março de 2006 às 19:24

Uma pergunta:

Onde fica essa pasta Projeto, e como compila as sources?

3 meses depois...
saviossS
18 de junho de 2006 às 20:47

e mesmo como usa o compilador ?

1 mês depois...
BillsinB
21 de julho de 2006 às 03:35

Onde fika LUA SCRIP? :embarrest:

Have Fun! :bigsmile:

21 de julho de 2006 às 07:39

aew cara..

esse codigo eh bom e facilita as coisas e eu ja vi em uns ots

por aew :icon1:

@Billsin

tem q por esse codigo na hora d compila cara..

vlws

flws ae

fuiz!!

3 meses depois...
makemakeloM
17 de outubro de 2006 às 11:58

Cara aki n ta dando certo ;p

Tpw na hora q eu abro o executavel do ot, na hora q ele carrega o config.lua ele da pau!

Me ajuda!

Edited-----

Aew n precisa mais n, vlw!

Eu recompilei tudo e deu certo!

Mto bom!

Editado Outubro 17 por makemakelo

2 meses depois...
Perfect MapperP
24 de dezembro de 2006 às 00:51

nossa cara muito bom mesmooo

vlws aew

flws

3 meses depois...
famiF
29 de março de 2007 às 18:29

Aki em ksa n funfo...tpw em qual seção bota esse código no config.lua??

 

flw!!

 

-------edited-------

 

responde as duvidas aew plz

Editado Abril 1 por fami

AlttliA
29 de março de 2007 às 19:07

Oo eu nem entendo de Codigos muito, mais se faz oque você diz que faz,

eh otimo, agora Addict... soh entre nos Chanse? eh Chance filho =]

1 mês depois...
AddictA
29 de abril de 2007 às 13:45

Filho? ;p que intimidade..

 

Data: 01:55 - 19/02/2006

 

Tópico ja tem mais de ano.. acho que seu coment foi excelente :p

1 mês depois...
GM VolcanoG
30 de maio de 2007 às 15:40

Hihow..Cara, vc disse q testo em 7.6 neh?

Funfa em 7.92???

AddictA
31 de maio de 2007 às 13:27

@Volcano

 

>.>

 

Em 7.92 o drop rate ja pode ser configurado pelo config.lua =-)