AlexxD 123 Posted May 2, 2015 Share Posted May 2, 2015 Hi devs, today I'll show you my change race from C++, with / without wolfman. 1) First, change race with WOLFMAN! 1. Go to cmd.cpp search ACMD(do_vote_block_chat); and after it add: // Change race ACMD(do_change_race); // Change race end 2. Also in cmd.cpp search // END_OF_BLOCK_CHAT and after it add: // Change race { "change_race", do_change_race, 0, POS_DEAD, GM_IMPLEMENTOR }, // Change race end 3. Now, in cmd_gm.cpp you'll need to go at the end of the file and put this code: ACMD(do_change_race) { char arg1[256], arg2[256]; two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2)); // init bool bIsSetSkillGroup = false; DWORD dwRace = MAIN_RACE_MAX_NUM; DWORD dwSkillGroup = 0; // check arg1 if (!*arg1) { goto USAGE; return; } // check&analyze arg2 if (*arg2) { str_to_number(dwSkillGroup, arg2); dwSkillGroup = MINMAX(0, dwSkillGroup, 2); bIsSetSkillGroup = true; } // analyze arg1 str_to_number(dwRace, arg1); if (dwRace >= MAIN_RACE_MAX_NUM) { goto USAGE; return; } // skip if same race if (dwRace==ch->GetRaceNum()) return; // process change race ch->ChatPacket(CHAT_TYPE_INFO, "Old race=%u, Group=%u", ch->GetRaceNum(), ch->GetSkillGroup()); ch->SetRace(dwRace); ch->ClearSkill(); // ch->ClearSubSkill(); if (bIsSetSkillGroup) { ch->SetSkillGroup(dwSkillGroup); } // quick mesh change workaround begin ch->SetPolymorph(101); ch->SetPolymorph(0); // quick mesh change workaround end ch->ChatPacket(CHAT_TYPE_INFO, "New race=%u, Group=%u", ch->GetRaceNum(), ch->GetSkillGroup()); return; // Usage USAGE: ch->ChatPacket(CHAT_TYPE_INFO, "Usage: /change_race <race_id>"); // lista raselor ch->ChatPacket(CHAT_TYPE_INFO, "Races list:"); ch->ChatPacket(CHAT_TYPE_INFO, "tWarrior M = %d", MAIN_RACE_WARRIOR_M); ch->ChatPacket(CHAT_TYPE_INFO, "tNinja F = %d", MAIN_RACE_ASSASSIN_W); ch->ChatPacket(CHAT_TYPE_INFO, "tSura M = %d", MAIN_RACE_SURA_M); ch->ChatPacket(CHAT_TYPE_INFO, "tShaman F = %d", MAIN_RACE_SHAMAN_W); ch->ChatPacket(CHAT_TYPE_INFO, "tWarrior W = %d", MAIN_RACE_WARRIOR_W); ch->ChatPacket(CHAT_TYPE_INFO, "tNinja M = %d", MAIN_RACE_ASSASSIN_M); ch->ChatPacket(CHAT_TYPE_INFO, "tSura W = %d", MAIN_RACE_SURA_W); ch->ChatPacket(CHAT_TYPE_INFO, "tShaman M = %d", MAIN_RACE_SHAMAN_M); ch->ChatPacket(CHAT_TYPE_INFO, "tWolfman M = %d", MAIN_RACE_WOLFMAN_M); ch->ChatPacket(CHAT_TYPE_INFO, "tMax race number = %d", MAIN_RACE_MAX_NUM); // Group lists. ch->ChatPacket(CHAT_TYPE_INFO, "Lista grupelor:"); ch->ChatPacket(CHAT_TYPE_INFO, "tNone = 0"); ch->ChatPacket(CHAT_TYPE_INFO, "tFirst = 1"); ch->ChatPacket(CHAT_TYPE_INFO, "tSecond = 2"); return; } 4. You're done. 2) If you want change_race without wolfman, put this code in cmd_gm.cpp: ACMD(do_change_race) { char arg1[256], arg2[256]; two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2)); // init bool bIsSetSkillGroup = false; DWORD dwRace = MAIN_RACE_MAX_NUM; DWORD dwSkillGroup = 0; // check arg1 if (!*arg1) { goto USAGE; return; } // check&analyze arg2 if (*arg2) { str_to_number(dwSkillGroup, arg2); dwSkillGroup = MINMAX(0, dwSkillGroup, 2); bIsSetSkillGroup = true; } // analyze arg1 str_to_number(dwRace, arg1); if (dwRace >= MAIN_RACE_MAX_NUM) { goto USAGE; return; } // skip if same race if (dwRace==ch->GetRaceNum()) return; // process change race ch->ChatPacket(CHAT_TYPE_INFO, "Old race=%u, Group=%u", ch->GetRaceNum(), ch->GetSkillGroup()); ch->SetRace(dwRace); ch->ClearSkill(); // ch->ClearSubSkill(); if (bIsSetSkillGroup) { ch->SetSkillGroup(dwSkillGroup); } // quick mesh change workaround begin ch->SetPolymorph(101); ch->SetPolymorph(0); // quick mesh change workaround end ch->ChatPacket(CHAT_TYPE_INFO, "New race=%u, Group=%u", ch->GetRaceNum(), ch->GetSkillGroup()); return; // Usage USAGE: ch->ChatPacket(CHAT_TYPE_INFO, "Usage: /change_race <race_id>"); // lista raselor ch->ChatPacket(CHAT_TYPE_INFO, "Races list:"); ch->ChatPacket(CHAT_TYPE_INFO, "tWarrior M = %d", MAIN_RACE_WARRIOR_M); ch->ChatPacket(CHAT_TYPE_INFO, "tNinja F = %d", MAIN_RACE_ASSASSIN_W); ch->ChatPacket(CHAT_TYPE_INFO, "tSura M = %d", MAIN_RACE_SURA_M); ch->ChatPacket(CHAT_TYPE_INFO, "tShaman F = %d", MAIN_RACE_SHAMAN_W); ch->ChatPacket(CHAT_TYPE_INFO, "tWarrior W = %d", MAIN_RACE_WARRIOR_W); ch->ChatPacket(CHAT_TYPE_INFO, "tNinja M = %d", MAIN_RACE_ASSASSIN_M); ch->ChatPacket(CHAT_TYPE_INFO, "tSura W = %d", MAIN_RACE_SURA_W); ch->ChatPacket(CHAT_TYPE_INFO, "tShaman M = %d", MAIN_RACE_SHAMAN_M); ch->ChatPacket(CHAT_TYPE_INFO, "tMax race number = %d", MAIN_RACE_MAX_NUM); // Group lists. ch->ChatPacket(CHAT_TYPE_INFO, "Lista grupelor:"); ch->ChatPacket(CHAT_TYPE_INFO, "tNone = 0"); ch->ChatPacket(CHAT_TYPE_INFO, "tFirst = 1"); ch->ChatPacket(CHAT_TYPE_INFO, "tSecond = 2"); return; } 1. You're done completly now. Enjoy! 2 "Don't be a scammer. Don't be a hacker. Don't be a motherfucker. Karma is a bitch" Link to comment Share on other sites More sharing options...
Honorable Member martysama0134 7174 Posted May 2, 2015 Honorable Member Share Posted May 2, 2015 You should stop leeching already published work. Check out my GitHub Link to comment Share on other sites More sharing options...
AlexxD 123 Posted May 2, 2015 Author Share Posted May 2, 2015 I know it's your code, but I've put it completly, with commands in cmd.cpp. "Don't be a scammer. Don't be a hacker. Don't be a motherfucker. Karma is a bitch" Link to comment Share on other sites More sharing options...
Ryen 44 Posted May 2, 2015 Share Posted May 2, 2015 I'm have one error to compile source... cmd_gm.cpp Link to comment Share on other sites More sharing options...
Cyxer 140 Posted November 14, 2015 Share Posted November 14, 2015 Work!! thanks:) Link to comment Share on other sites More sharing options...
Recommended Posts