Jump to content

[Comando] Mudar de Raça


Dynamic Things

Recommended Posts

Boas, hoje não venho deixar muito, o que deixo aqui para quem precisar é o comando para mudar de raça.
Sei que este tutorial já existe na net, a diferença é que atualmente todos os que se encontram na net ficam bugados porque não desequipam os itens da personagem e ao mudar de raça, por exemplo de um guerreiro para xama, se o guerreiro tiver uma espada na mão o xama ficará dentro do chão, por isso decide partilha o comando já como deve ser.

Codigo inicial foi criado pelo MartySama, no entanto ainda não actualizava, estava bugado tal como referi acima.

 

Para começar ir a cmd.cpp e adicionar:

ACMD(do_mudar_raca);

Ainda no ficheiro cmd.cpp antes de

{ "\n",		NULL,			0,			POS_DEAD,	GM_IMPLEMENTOR	}

Adicionar

{ "mudar",	do_mudar_raca,		0,			POS_DEAD,	GM_IMPLEMENTOR	},

Agora no ficheiro cmd_gm.cpp adicionar o seguinte:

ACMD(do_mudar_raca)
{
	char arg1[256], arg2[256];
	two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
	bool bIsSetSkillGroup = false;
	DWORD novaRaca = MAIN_RACE_MAX_NUM;
	DWORD grupoHabilidade = 0;
	LPITEM traje = ch->GetWear(WEAR_COSTUME_BODY);
	LPITEM trajedearma = ch->GetWear(WEAR_COSTUME_WEAPON);
	LPITEM armadura = ch->GetWear(WEAR_BODY);
	LPITEM arma = ch->GetWear(WEAR_WEAPON);
	LPITEM penteado = ch->GetWear(WEAR_COSTUME_HAIR);

	// Verificar arg1
	if (!*arg1)
	{
		goto EXEMPLO;
		return;
	}
	// Verificar arg2
	if (*arg2)
	{
		str_to_number(grupoHabilidade, arg2);
		grupoHabilidade = MINMAX(0, grupoHabilidade, 2);
		bIsSetSkillGroup = true;
	}
	// Verificar arg1
	str_to_number(novaRaca, arg1);
	if (novaRaca >= MAIN_RACE_MAX_NUM)
	{
		goto EXEMPLO;
		return;
	}
	// Verificar se a nova raça escolhida é igual a raça antiga
	if (novaRaca==ch->GetRaceNum()){
		ch->ChatPacket(CHAT_TYPE_INFO, "A nova raca escolhida e igual a raça que ja tens");
		return;
	}
		
	// Desequipar Itens, para evitar que a personagem fique bugada
	if (traje != NULL)
		ch->UnequipItem(traje);
	
	if (trajedearma != NULL)
		ch->UnequipItem(trajedearma);
	
	if (armadura != NULL)
		ch->UnequipItem(armadura);
	
	if (arma != NULL)
		ch->UnequipItem(arma);
	
	if (penteado != NULL)
		ch->UnequipItem(penteado);
	
	// Mudar de Raça
	ch->ChatPacket(CHAT_TYPE_INFO, "Personagem antiga = %u, Tipo de Habilidade = %u", ch->GetRaceNum(), ch->GetSkillGroup());
	ch->SetRace(novaRaca);
	ch->ClearSkill();
	if (bIsSetSkillGroup)
	{
		ch->SetSkillGroup(grupoHabilidade);
	}
	
	// Transformar a personagem em poly para que possa atualizar a aparencia
	ch->SetPolymorph(101);
	ch->SetPolymorph(0);
	
	ch->ChatPacket(CHAT_TYPE_INFO, "Personagem atual = %u, Tipo de Habilidade = %u", ch->GetRaceNum(), ch->GetSkillGroup());
	return;
	
EXEMPLO:
	ch->ChatPacket(CHAT_TYPE_INFO, "Comando: /mudar <id da nova raca> <Grupo de Habilidade>");
	ch->ChatPacket(CHAT_TYPE_INFO, "Lista de Racas");
	ch->ChatPacket(CHAT_TYPE_INFO, "\tWarrior M = %d | Sura M = %d | Ninja M = %d | Shaman M = %d | Wolfman M = %d", MAIN_RACE_WARRIOR_M, MAIN_RACE_SURA_M, MAIN_RACE_ASSASSIN_M, MAIN_RACE_SHAMAN_M, MAIN_RACE_WOLFMAN_M);
	ch->ChatPacket(CHAT_TYPE_INFO, "\tWarrior W = %d | Sura W = %d | Ninja F = %d | Shaman F = %d", MAIN_RACE_WARRIOR_W, MAIN_RACE_SURA_W, MAIN_RACE_ASSASSIN_W, MAIN_RACE_SHAMAN_W);
	ch->ChatPacket(CHAT_TYPE_INFO, "\tNumeros Maximo = %d", MAIN_RACE_MAX_NUM);
	ch->ChatPacket(CHAT_TYPE_INFO, "Grupos de Skills");
	ch->ChatPacket(CHAT_TYPE_INFO, "\tNenhuma = 0 | Primeiro = 1 | Segundo = 2");
	return;
}

Cumprimentos, DThings

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...