Como assim randomizer? =O isso afeta em q no jogo? =/
- Fórum
- OTServ
- Recursos
- Linguagens de Programação
- [7.92] Randomizer Grounds.
info
Grupo: Campones
Registrado: 25/02/07
Posts: 84
Reputação: 0

Como assim randomizer? =O isso afeta em q no jogo? =/
Não afeta nada, muito pelo contrário melhora tudo os tiles, ou pisos como você deseja chamar,
Ele randomiza, invês de ficar igual, mas se seu mapa for maior de 30mb ele vai demorar pra abrir só.
Tem programa que faiz isso hehe.
Abraços ^^
Parece ser muito bom.
Você poderia dar o nome do programa?
Não afeta nada, muito pelo contrário melhora tudo os tiles, ou pisos como você deseja chamar,Ele randomiza, invês de ficar igual, mas se seu mapa for maior de 30mb ele vai demorar pra abrir só.
Tem programa que faiz isso hehe.
Abraços ^^
Ta mas então ele dexa mais leve mas sem altera graficos neh? ;D Eu entendi agora? ;D
A e outra cosia... tm como vc arrumar os beds? acho que tem algo errado no code pq aki n funfa =O, ams eu n sei neh, eu n entendo nd de codes ASKOPAKSOS
info
Grupo: Campones
Registrado: 25/02/07
Posts: 84
Reputação: 0

Ta mas então ele dexa mais leve mas sem altera graficos neh? ;D Eu entendi agora? ;D
A e outra cosia... tm como vc arrumar os beds? acho que tem algo errado no code pq aki n funfa =O, ams eu n sei neh, eu n entendo nd de codes ASKOPAKSOS
Sim, não é que deixa mais leve, deixa pesado pra abrir o server, intão ele demora, mais isso nao danifica dentro do jogo, eu arrumarei os beds, é que eu tinha postado os mais atualizados mais tiraram hehehe.. eu posto denovo amanha.
Abraços!
atah agora tendi ;D shdihsahd, ta vo fica esperando ;D vlws mesmo Zani
Nossa cara, obrigadão, tava em procura desse malditinho código e não achava...Nem sei randomizar os mapas manualmente...Muito trabalho...
Q Q EH INTEGER?? Q ARQUIVO EH ONDE EH BOTO ISSO Q TENK IR NO INTEGER???
BOm COde mais n sei o q eh INteger =( explica plxx
info
Grupo: Campones
Registrado: 25/02/07
Posts: 84
Reputação: 0

Q Q EH INTEGER?? Q ARQUIVO EH ONDE EH BOTO ISSO Q TENK IR NO INTEGER???
BOm COde mais n sei o q eh INteger =( explica plxx
E ai Torpse seguinte,
No Configmanager tem 2 tipos de função a primeira é String, que é tipo "yes" ou "no", agora os Integer são números,
No configmanager.h lá é separado essas funções por isso eu falei ;}
Primeiros vem as Strings, e mas pra baixo tem as Integer, ai segue oque eu falei ai no code ![]()
Abraços, espero ter ajudado
Ooo vlew kra otimo code obrigado por responder so novo aqui no ot em questao de responde hehehe SO teu Fan xD
abraços, Balneario EH NOIS \o/
Ajudo mUito deu certo obrigado mesmo tu tem futuro xD
info
Grupo: Campones
Registrado: 06/04/07
Posts: 61
Reputação: 0

Aew cara otimo codigo
mas tipow fui tentar colokar nu meu vo 8.0 e nun funfa
tu sabe se tem q muda algo?
se tive adapta eli pra 8.0
abraços



info
Grupo: Campones
Registrado: 25/02/07
Posts: 84
Reputação: 0
Não recomendo usar isso para mapas grandes(acima de 30mb), recomando usar programas. porque dependendo o tamanho do mapa demora + para abrir o servidor, porque irá randomizar todos os tiles, mais como tem pessoas que gostam de randomizar pelo servidor aqui vai o code:
Em game.cpp adicione no final
short Game::checkItemGroundType(uint16_t itemid) { if(itemid >= 4608 && itemid <= 4625 || itemid >= 4664 && itemid <= 4666 || itemid == 4820) return GROUND_WATER; else if(itemid >= 708 && itemid <= 711) return GROUND_TAR; else if(itemid >= 4691 && itemid <= 4712 || itemid >= 4749 && itemid <= 4755 || itemid == 4758) return GROUND_SWAMP; else if(itemid >= 598 && itemid <= 601) return GROUND_LAVA; else return 0; } short Game::checkItemGroundTypeRandomizer(uint16_t itemid) { if(itemid >= 4608 && itemid <= 4625 || itemid >= 4664 && itemid <= 4666) return GROUND_WATER; else if(itemid >= 708 && itemid <= 711) return GROUND_TAR; else if(itemid >= 4691 && itemid <= 4712 || itemid >= 4749 && itemid <= 4755 || itemid == 4758) return GROUND_SWAMP; else if(itemid >= 598 && itemid <= 601) return GROUND_LAVA; else if(itemid >= 4405 && itemid <= 4438) return GROUND_MOUNTAIN1; else if(itemid >= 4439 && itemid <= 4455) return GROUND_MOUNTAIN2; else if(itemid == 4566 || itemid >= 4570 && itemid <= 4579 || itemid == 4595) return GROUND_ROCKS; else if(itemid >= 4526 && itemid <= 4541 || itemid >= 4567 && itemid <= 4569 || itemid == 4756) return GROUND_GRASS; else if(itemid >= 5405 && itemid <= 5410) return GROUND_UNDERWATER; else return 0; }Em game.h abaixo de:
Adicione:
Vá para const79.h, abaixo de:
enum SquareColor_t { SQ_COLOR_NONE = 256, SQ_COLOR_BLACK = 0, };Adicione:
enum GroundType_t { GROUND_WATER = 1, GROUND_LAVA = 2, GROUND_SWAMP = 3, GROUND_TAR = 4, GROUND_MOUNTAIN1 = 5, GROUND_MOUNTAIN2 = 6, GROUND_ROCKS = 7, GROUND_GRASS = 8, GROUND_UNDERWATER = 9, };Agora em iomapotbm.cpp abaixo de:
case OTBM_ATTR_ITEM: { Item* item = Item::CreateItem(propStream); if(!item){ map->setLastError(LOADMAPERROR_FAILEDTOCREATEITEM, nodeTile); return false; }Adicione:
if(g_config.getString(ConfigManager::RANDOMIZE_GROUND) == "yes" && g_game.checkItemGroundTypeRandomizer(item->getID()) != 0 && item->getActionId() == 0 && item->getUniqueId() == 0){ randomizeGround(item); }No final de iomapotbm.cpp adicione:
void IOMapOTBM::randomizeGround(Item* item) { uint16_t percent = 1; GroundType_t type; switch(g_game.checkItemGroundTypeRandomizer(item->getID())){ case GROUND_WATER: if(g_config.getNumber(ConfigManager::WATER_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::WATER_PERCENT); else percent = 0; type = GROUND_WATER; break; case GROUND_LAVA: if(g_config.getNumber(ConfigManager::LAVA_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::LAVA_PERCENT); else percent = 0; type = GROUND_LAVA; break; case GROUND_SWAMP: if(g_config.getNumber(ConfigManager::SWAMP_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::SWAMP_PERCENT); else percent = 0; type = GROUND_SWAMP; break; case GROUND_TAR: if(g_config.getNumber(ConfigManager::TAR_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::TAR_PERCENT); else percent = 0; type = GROUND_TAR; break; case GROUND_MOUNTAIN1: if(g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT); else percent = 0; type = GROUND_MOUNTAIN1; break; case GROUND_MOUNTAIN2: if(g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT); else percent = 0; type = GROUND_MOUNTAIN2; break; case GROUND_ROCKS: if(g_config.getNumber(ConfigManager::ROCKS_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::ROCKS_PERCENT); else percent = 0; type = GROUND_ROCKS; break; case GROUND_GRASS: if(g_config.getNumber(ConfigManager::GRASS_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::GRASS_PERCENT); else percent = 0; type = GROUND_GRASS; break; case GROUND_UNDERWATER: if(g_config.getNumber(ConfigManager::UNDERWATER_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::UNDERWATER_PERCENT); else percent = 0; type = GROUND_UNDERWATER; break; } if(percent == 0) return; int x = random_range(1,percent); short y = 0; int toID = 0; if(x == 1){ if(type == GROUND_WATER){ y = random_range(1,21); if(y >= 1 && y <= 18) toID = 4607+y; else if(y >= 19 && y <= 21) toID = 4645+y; } else if(type == GROUND_LAVA){ y = random_range(1,4); toID = 597+y; } else if(type == GROUND_SWAMP){ y = random_range(1,30); if(y >= 1 && y <= 22) toID = 4690+y; else if(y >= 23 && y <= 29) toID = 4726+y; else if(y == 30) toID = 4758; } else if(type == GROUND_TAR){ y = random_range(1,4); toID = 707+y; } else if(type == GROUND_MOUNTAIN1){ y = random_range(1,34); toID = 4404+y; } else if(type == GROUND_MOUNTAIN2){ y = random_range(1,17); toID = 4438+y; } else if(type == GROUND_ROCKS){ y = random_range(1,12); if(y == 1) toID = 4566; else if(y >= 2 && y <= 11) toID = 4568+y; else if(y == 12) toID = 4595; } else if(type == GROUND_GRASS){ y = random_range(1,20); if(y >= 1 && y <= 16) toID = 4525+y; else if(y >= 17 && y <= 19) toID = 4550+y; else if(y == 20) toID = 4756; } else if(type == GROUND_UNDERWATER){ y = random_range(1,6); toID = 5404+y; } item->setID(toID); } }Em iomapotbm.h, abaixo de:
Adicione:
Agora em item.cpp abaixo de:
else if(_type == ITEM_DUSTBIN){ newItem = new TrashHolder(_type /*, NM_ME_PUFF*/); }Adicione:
else if(g_game.checkItemGroundType(_type) != 0){ MagicEffectClasses effect_type; switch(g_game.checkItemGroundType(_type)){ case GROUND_TAR: effect_type = NM_ME_PUFF; break; case GROUND_WATER: effect_type = NM_ME_LOSE_ENERGY; break; case GROUND_SWAMP: effect_type = NM_ME_POISON_RINGS; break; case GROUND_LAVA: effect_type = NM_ME_HITBY_FIRE; break; } newItem = new TrashHolder(_type, effect_type); }Agora em tile.cpp abaixo de:
Adicione:
Agora em configmanager.cpp adicione
Em configmanager.h adicione nos strings
Agora nos integer adicione
Pronto de rebuild all, ctrl+f11 e adicione isso no config.lua:
Espero ter ajudado, qualquer dúvida só perguntar.
Abraços.
Editado Maio 29 por Jackson Zani