Ir para conteúdo

Drop Rate Code


Addict

Posts Recomendados

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.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 3 months later...
  • 1 month later...
  • 2 months later...

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!

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • 3 months later...

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

  • 5 weeks later...
  • 1 month later...
×
×
  • Criar Novo...