Drop Rate Code

Addict
Por Addict
em Linguagens de Programação

Addict

Ex-Diretor de Equipe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 12/10/05Posts: 568Gênero: MasculinoChar no Tibia: Homao Dapoha

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.

Proglin

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/02/06Posts: 1

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

Tks

Turion Server 8.0
http://turion.no-ip.info

Imperi

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/10/05Posts: 55

Adorei cara, muito show.

Uma vez eu fiz, editei todo meu Serv ;/

Agora quem precisa tem auqi.

Adorei mesmo

F

U

I

~*~ Imperi Again ~*~

user posted image

Addict

Ex-Diretor de Equipe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 12/10/05Posts: 568Gênero: MasculinoChar no Tibia: Homao Dapoha

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

Etoh

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/11/05Posts: 2

Uma pergunta:

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

Billsin

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/07/06Posts: 36

Onde fika LUA SCRIP? :embarrest:

Have Fun! :bigsmile:

Duvidas? SEMPRE-----Problemas? TODO DIA----Desistir! JAMAIS

Angel Of Ilusions

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 11/12/05Posts: 108

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!!

makemakelo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 19/02/06Posts: 4

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!

Perfect Mapper

Varegera
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 12/12/06Posts: 124Gênero: MasculinoChar no Tibia: lanternah

nossa cara muito bom mesmooo

vlws aew

flws


primeiro avatar do xtibia =D


clica AQUI e upe meu pokemon PLXXXX

metas:
[x]1post----------------------------[x]100 posts (BARONETE)----------[ ]800 posts (ARISTOCRATA)
[x]5 posts (SERVO)---------------[x]200 posts (BARÃO)--------------[ ]1000 posts (REGENTE)
[x]10 posts (CAMPONÊS)---------[ ]300 posts (VISCONDE)----------[ ]1400 posts (SÁBIO)
[x]25 posts (CAÇADOR)----------[ ]400 posts (DUQUE)--------------[ ]1800 posts (SACERDOTE)
[x]50 posts (CAVALEIRO)--------[ ]600 posts (ARQUEDUQUE)-------[ ]2500 posts (PRÍNCIPE)


fami

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/03/07Posts: 3

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

 

flw!!

 

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

 

responde as duvidas aew plz

Alttli

Ex-Coordenador de Design
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/02/07Posts: 284

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 =]

"o último pingo é sempre da cueca."

somente se a tábua do vaso estiver levantada.

 

Não sei se com vocês também mas meus pingos de mijo não resistem a um assento abaixado.

 

 

Addict

Ex-Diretor de Equipe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 12/10/05Posts: 568Gênero: MasculinoChar no Tibia: Homao Dapoha

Filho? ;p que intimidade..

 

Data: 01:55 - 19/02/2006

 

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

Addict

Ex-Diretor de Equipe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 12/10/05Posts: 568Gênero: MasculinoChar no Tibia: Homao Dapoha

@Volcano

 

>.>

 

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