Nordway
22.11.2009, 12:34
Уважаемые кодеры, помогите сделать так, чтобы на арене давался хонор либо за обычный килл, либо за победу (фиксированное количество) :(
Пытался сам сделать, но так как в С++ полный ноль ничего не получилось. Изучал файлы BattleGround.cpp и Player.cpp
BattleGround.cpp
Здесь нашёл два участка кода, котрые возможно смогли бы мне помочь, это:
1. UpdatePlayerScore()
// do not add honor in arenas
if (isBattleGround())
{
// reward honor instantly
if (Source->RewardHonor(NULL, 1, value))
itr->second->BonusHonor += value;
}
break;
Пробовал удалять условие if (isBattleGround()) и оставлять только мгновенное получение хонора. Исходники компилируются, но эффекта никакого нет.
2. EndBattleGround()
После вычисления рейтингов идёт
if (team == winner)
{
RewardMark(plr,ITEM_WINNER_COUNT);
RewardQuestComplete(plr);
}
else
RewardMark(plr,ITEM_LOSER_COUNT);
может быть можно туда как-то прицепить выдачу хонора, но так как просто незнаю как не пробовал этот вариант. Есть мысль, сделать по аналогии, что-то типа RewardHonor(plr,количество_хонора) ; правильно ли?:)
Player.cpp
Ну тут только одно место смог найти, это в RewardHonor()
// do not reward honor in arenas, but enable onkill spellproc
if(InArena())
{
if(!uVictim || uVictim == this || uVictim->GetTypeId() != TYPEID_PLAYER)
return false;
if( GetBGTeam() == ((Player*)uVictim)->GetBGTeam() )
return false;
return true;
}
Здесь была попытка просто false заменить на true :D
Сервер собрался, но эффекта никакого.
Надеюсь на вашу помощь :)
Пытался сам сделать, но так как в С++ полный ноль ничего не получилось. Изучал файлы BattleGround.cpp и Player.cpp
BattleGround.cpp
Здесь нашёл два участка кода, котрые возможно смогли бы мне помочь, это:
1. UpdatePlayerScore()
// do not add honor in arenas
if (isBattleGround())
{
// reward honor instantly
if (Source->RewardHonor(NULL, 1, value))
itr->second->BonusHonor += value;
}
break;
Пробовал удалять условие if (isBattleGround()) и оставлять только мгновенное получение хонора. Исходники компилируются, но эффекта никакого нет.
2. EndBattleGround()
После вычисления рейтингов идёт
if (team == winner)
{
RewardMark(plr,ITEM_WINNER_COUNT);
RewardQuestComplete(plr);
}
else
RewardMark(plr,ITEM_LOSER_COUNT);
может быть можно туда как-то прицепить выдачу хонора, но так как просто незнаю как не пробовал этот вариант. Есть мысль, сделать по аналогии, что-то типа RewardHonor(plr,количество_хонора) ; правильно ли?:)
Player.cpp
Ну тут только одно место смог найти, это в RewardHonor()
// do not reward honor in arenas, but enable onkill spellproc
if(InArena())
{
if(!uVictim || uVictim == this || uVictim->GetTypeId() != TYPEID_PLAYER)
return false;
if( GetBGTeam() == ((Player*)uVictim)->GetBGTeam() )
return false;
return true;
}
Здесь была попытка просто false заменить на true :D
Сервер собрался, но эффекта никакого.
Надеюсь на вашу помощь :)