Шаг 1.
Открываешь файл constants.inl
Добавляешь новую переменную
Code
#define MIN_ULT_LEVEL_VIP 10 //Минимальный уровень доступа к "Супер навыку" для V.I.P.
Скрин как должно быть:
Шаг 2.
Открываешь файл menus.inl
Находишь public MENU_SelectSkill( idUser )
Опускаешься ниже и заменяешь полностью условие if (iSkillLevel < MAX_ULTIMATE_LEVEL)
на код приведенный ниже:
Code
if (iSkillLevel < MAX_ULTIMATE_LEVEL)
{
if(!(get_user_flags(idUser) & ADMIN_LEVEL_H))
{
// User can't choose ultimate yet :/
if (p_data[idUser][P_LEVEL] <= (MIN_ULT_LEVEL - 1) )
pos += formatex( szMsg[pos], charsmax(szMsg)-pos, "\d" );
// Then the user is level 6 or above and can select their ultimate!
else
iKeys |= (1<<iSkillCounter);
}
else
{
// VIP может выбирать ультимейт в меню если набил MIN_ULT_LEVEL_VIP уровней
if (p_data[idUser][P_LEVEL] <= (MIN_ULT_LEVEL_VIP - 1) )
pos += formatex( szMsg[pos], charsmax(szMsg)-pos, "\d" );
else
iKeys |= (1<<iSkillCounter);
}
pos += formatex( szMsg[pos], charsmax(szMsg)-pos, "^n%d. %L: %s\w", iSkillCounter+1, LANG_PLAYER,
"WORD_ULTIMATE", szSkillName );
}
Скрин как должно быть:
Шаг 3.
Открываешь файл skill_manager.inl
Находишь SM_GiveRandomSkillPoint( idUser )
Полностью заменяешь условие if ( p_data[idUser][P_LEVEL] >= MIN_ULT_LEVEL )
на код приведенный ниже:
Code
if(!(get_user_flags(idUser) & ADMIN_LEVEL_H))
{
// Give them their ultimate if we can
if ( p_data[idUser][P_LEVEL] >= MIN_ULT_LEVEL )
{
new iUltSkill = SM_GetRandomSkillByType( idUser, SKILL_TYPE_ULTIMATE );
if ( iUltSkill != -1 && SM_GetSkillLevel( idUser, iUltSkill, 11 ) == 0 )
{
// Set up the skill...
SM_SetSkill( idUser, iUltSkill );
//client_print( idUser, print_chat, "[DEBUG] Ultimate given: %d", iUltSkill );
return true;
}
}
}
else
{
// Give them their ultimate if we can
if ( p_data[idUser][P_LEVEL] >= MIN_ULT_LEVEL_VIP )
{
new iUltSkill = SM_GetRandomSkillByType( idUser, SKILL_TYPE_ULTIMATE );
if ( iUltSkill != -1 && SM_GetSkillLevel( idUser, iUltSkill, 11 ) == 0 )
{
// Set up the skill...
SM_SetSkill( idUser, iUltSkill );
//client_print( idUser, print_chat, "[DEBUG] Ultimate given: %d", iUltSkill );
return true;
}
}
}
Скрин как должно быть:
Шаг 4.
Открываешь файл ultimates.inl
Находишь ULT_Icon( idUser, flag )
Заменяешь полностью условиеif ( p_data[idUser][P_LEVEL] < MIN_ULT_LEVEL && flag != ICON_HIDE )
на код ниже:
Code
if(!(get_user_flags(idUser) & ADMIN_LEVEL_H))
{
if(p_data[idUser][P_LEVEL] < MIN_ULT_LEVEL && flag != ICON_HIDE)
flag = ICON_HIDE;
}
else
{
if(p_data[idUser][P_LEVEL] < MIN_ULT_LEVEL_VIP && flag != ICON_HIDE)
flag = ICON_HIDE;
}
Скрин как должно быть:
Шаг 5.
Открываешь файл XP.inl
Находишь XP_Check( idUser, bShowGained = true )
Заменяешь полностью условие if ( p_data[idUser][P_LEVEL] < MIN_ULT_LEVEL )
на код ниже:
Code
if(!(get_user_flags(idUser) & ADMIN_LEVEL_H))
{
// We might need to remove the ult first!
if(p_data[idUser][P_LEVEL] < MIN_ULT_LEVEL)
{
new iUltimateID = SM_GetSkillOfType( idUser, SKILL_TYPE_ULTIMATE );
// Then we need to remove this!
if ( SM_GetSkillLevel( idUser, iUltimateID, 0 ) == 1 )
{
// Remove the ult
SM_SetSkillLevel( idUser, iUltimateID, 0, 0 );
bSkillRemoved = true;
// Clear ult icon!
ULT_ClearIcons( idUser );
// Get our current skills used
iSkillsUsed = SM_TotalSkillPointsUsed( idUser );
// Restart the loop!
continue;
}
}
}
else
{
// We might need to remove the ult first!
if(p_data[idUser][P_LEVEL] < MIN_ULT_LEVEL_VIP)
{
new iUltimateID = SM_GetSkillOfType( idUser, SKILL_TYPE_ULTIMATE );
// Then we need to remove this!
if ( SM_GetSkillLevel( idUser, iUltimateID, 0 ) == 1 )
{
// Remove the ult
SM_SetSkillLevel( idUser, iUltimateID, 0, 0 );
bSkillRemoved = true;
// Clear ult icon!
ULT_ClearIcons( idUser );
// Get our current skills used
iSkillsUsed = SM_TotalSkillPointsUsed( idUser );
// Restart the loop!
continue;
}
}
}
Скрин как должно быть: