Ir para conteúdo

[7.92] Randomizer Grounds.


Posts Recomendados

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:

void changeLight(const Creature* creature);

 

Adicione:

short checkItemGroundType(uint16_t itemid);
short checkItemGroundTypeRandomizer(uint16_t itemid);

 

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:

virtual bool loadHouses(Map* map);

 

Adicione:

void randomizeGround(Item* item);

 

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:

else if(iiType.isTar())
						continue;

 

Adicione:

else if(g_game.checkItemGroundType(iitem->getID()) != 0)
						continue;

 

Agora em configmanager.cpp adicione

m_confString[RANDOMIZE_GROUND] = getGlobalString(L, "randomize_ground", "no");
m_confInteger[WATER_PERCENT] = getGlobalNumber(L, "water_percent", 10);
m_confInteger[LAVA_PERCENT] = getGlobalNumber(L, "lava_percent", 10);
m_confInteger[SWAMP_PERCENT] = getGlobalNumber(L, "swamp_percent", 10);
m_confInteger[TAR_PERCENT] = getGlobalNumber(L, "tar_percent", 10);
m_confInteger[MOUNTAIN_PERCENT] = getGlobalNumber(L, "mountain_percent", 10);
m_confInteger[ROCKS_PERCENT] = getGlobalNumber(L, "rocks_percent", 10);
m_confInteger[GRASS_PERCENT] = getGlobalNumber(L, "grass_percent", 10);

 

Em configmanager.h adicione nos strings

RANDOMIZE_GROUND,

 

Agora nos integer adicione

WATER_PERCENT,
	LAVA_PERCENT,
	SWAMP_PERCENT,
	TAR_PERCENT,
	MOUNTAIN_PERCENT,
	ROCKS_PERCENT,
	GRASS_PERCENT,
	UNDERWATER_PERCENT,

 

Pronto de rebuild all, ctrl+f11 e adicione isso no config.lua:

--------------------------------------------------------------------
---------- Randomize Ground Configs ------------
--------------------------------------------------------------------

-- Randomize Ground? (yes/no)
randomize_ground = "no"

-- Water Percent
water_percent = 70

-- Lava Percent
lava_percent = 10

-- Swamp Percent
swamp_percent = 50

-- Tar Percent
tar_percent = 10

-- Mountain Percent
mountain_percent = 50

-- Rocks Percent
rocks_percent = 60

-- Grass Percent
grass_percent = 80

-- Underwater Ground Percent
underwater_percent = 70

 

Espero ter ajudado, qualquer dúvida só perguntar.

 

Code desenvolvido pelo nosso amigo Zorzin.

 

Abraços.

Editado por Jackson Zani
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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!

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...