- Mesaj
- 1.025
- Çözümler
- 35
- Beğeni
- 1.077
- Puan
- 1.339
- Ticaret Puanı
- 0
Komutun yazarı metin2.dev'den
Kodu refactor eden forum üyemiz martysama0134'tür
Komutu aldığım asıl konu:
Oyun içinde test yapma gibi çeşitli amaçlarla anlık ırk değiştirmek için kullanabileceğiniz bir komuttur.
cmd.cpp (ServerSource)
cmd_gm.cpp (ServerSource)
Linkleri görebilmek için
giriş yap veya kayıt ol.
'dır.Kodu refactor eden forum üyemiz martysama0134'tür
Komutu aldığım asıl konu:
Linkleri görebilmek için
giriş yap veya kayıt ol.
Oyun içinde test yapma gibi çeşitli amaçlarla anlık ırk değiştirmek için kullanabileceğiniz bir komuttur.
cmd.cpp (ServerSource)
ara:
ACMD(do_clear_affect);
altına ekle:
ACMD(do_change_race); // Change race
ara:
{ "do_clear_affect", do_clear_affect, 0, POS_DEAD, GM_LOW_WIZARD },
altına ekle:
{ "change_race", do_change_race, 0, POS_DEAD, GM_IMPLEMENTOR }, // Change race
cmd_gm.cpp (ServerSource)
dosyanın en altına ekle:
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> <&skill_group>");
// race list
ch->ChatPacket(CHAT_TYPE_INFO, "RACE-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, "\tAssassin 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);
#ifdef ENABLE_WOLFMAN_CHARACTER
ch->ChatPacket(CHAT_TYPE_INFO, "\tWolfman M = %d", MAIN_RACE_WOLFMAN_M);
#endif
ch->ChatPacket(CHAT_TYPE_INFO, "\tRACE_MAX_NUM = %d", MAIN_RACE_MAX_NUM);
// group list
ch->ChatPacket(CHAT_TYPE_INFO, "GROUP-LIST");
ch->ChatPacket(CHAT_TYPE_INFO, "\tNone = 0");
ch->ChatPacket(CHAT_TYPE_INFO, "\tFirst = 1");
ch->ChatPacket(CHAT_TYPE_INFO, "\tSecond = 2");
return;
}
Son düzenleme: