Dynamic Things Posted February 27, 2018 at 10:03 PM Share Posted February 27, 2018 at 10:03 PM 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 Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now