Otwieramy const.inl:
Szukamy:
#define LEVEL_NONE 0
#define LEVEL_BASIC 1
#define LEVEL_VETERAN 2
#define LEVEL_EXPERT 3
#define LEVEL_PROFESIONAL 4
I zamieniamy na:
#define LEVEL_NONE 0
#define LEVEL_BASIC 1
#define LEVEL_VETERAN 2
#define LEVEL_EXPERT 3
#define LEVEL_PROFESIONAL 4
#define LEVEL_NOWY 5
LEVEL_NOWY to identyfikator nowego poziomu odznak.
Szukamy:
new const gBadgeName[MAX_BADGES][5][] =
{
{ "","Podstawowa walka Nozem","Weteran w walce Nozem","Expert w walce Nozem","Profesjonalista w walce Nozem"},
{ "","Podstawowa walka Pistoletem","Weteran w walce z Pistoletem","Expert w walce z Pistoletem","Profesjonalista w walce z Pistoletem"},
{ "","Podstawowa walka Bronia Szturmowa","Weteran w walce z Bronia Szturmowa","Expert w walce z Bronia Szturmowa","Profesjonalista w walce z Bronia Szturmowa"},
{ "","Podstawowa walka Bronia Snajperska","Weteran w walce z Bronia Snajperska","Expert w walce z Bronia Snajperska","Profesjonalista w walce z Bronia Snajperska"},
{ "","Poczatkujacy w walce Bronia Wsparcia","Weteran w walce Bronia Wsparcia","Expert w walce Bronia Wsparcia","Profesjonalista w walce Bronia Wsparcia"},
{ "","Podstawowe obeznanie w Materialach Wybuchowych","Weteran w obeznaniu w Materialach Wybuchowych","Expert w obeznaniu w Materialach Wybuchowych","Profesjonalista w obeznaniu w Materialach Wybuchowych"},
{ "","Podstawowa walka z Shotgunem","Weteran w walce z Shotgunem","Expert w walce z Shotgunem","Profesjonalista w walce z Shotgunem"},
{ "","Podstawowa walka z SMG","Weteran w walce z SMG","Expert w walce z SMG","Profesjonalista w walce z SMG"}
};
I zamieniamy na:
new const gBadgeName[MAX_BADGES][6][] =
{
{ "","Podstawowa walka Nozem","Weteran w walce Nozem","Expert w walce Nozem","Profesjonalista w walce Nozem","Mistrz w walce Nozem"},
{ "","Podstawowa walka Pistoletem","Weteran w walce z Pistoletem","Expert w walce z Pistoletem","Profesjonalista w walce z Pistoletem","Mistrz w walce Pistoletem"},
{ "","Podstawowa walka Bronia Szturmowa","Weteran w walce z Bronia Szturmowa","Expert w walce z Bronia Szturmowa","Profesjonalista w walce z Bronia Szturmowa","Mistrz w walce z Bronia Szturmowa"},
{ "","Podstawowa walka Bronia Snajperska","Weteran w walce z Bronia Snajperska","Expert w walce z Bronia Snajperska","Profesjonalista w walce z Bronia Snajperska","Mistrz w walce z Bronia Snajperska"},
{ "","Poczatkujacy w walce Bronia Wsparcia","Weteran w walce Bronia Wsparcia","Expert w walce Bronia Wsparcia","Profesjonalista w walce Bronia Wsparcia","Mistrz w walce Bronie Wsparcie"},
{ "","Podstawowe obeznanie w Materialach Wybuchowych","Weteran w obeznaniu w Materialach Wybuchowych","Expert w obeznaniu w Materialach Wybuchowych","Profesjonalista w obeznaniu w Materialach Wybuchowych","Mistrz w obeznaniu w Materialach Wybuchowych"},
{ "","Podstawowa walka z Shotgunem","Weteran w walce z Shotgunem","Expert w walce z Shotgunem","Profesjonalista w walce z Shotgunem","Mistrz w walce z Shotgunem"},
{ "","Podstawowa walka z SMG","Weteran w walce z SMG","Expert w walce z SMG","Profesjonalista w walce z SMG","Mistrz w walce z SMG"}
};
W moim przypadku dodaję poziom Mistrz.
Szukamy:
new const gInvisAlphaValue[5] =
{
190, //Basic Shotgun Combat
150, //Veteran Shotgun Combat
100, //Expert Shotgun Combat
80,
50
};
I zamieniamy na:
new const gInvisAlphaValue[6] =
{
220,
190,
150,
100,
80,
50
};
Otwieramy check.inl:
Szukamy:
case LEVEL_EXPERT:
{
if ((wroundstats[0]>4) && (wroundstats[2]>1) && (kills>199))
{
g_PlayerBadges[id][BADGE_KNIFE]=LEVEL_PROFESIONAL; //Profesjonalista Knife Badge
#if defined KOLOROWY_SAY
ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_KNIFE][LEVEL_PROFESIONAL]);
#else
client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_KNIFE][LEVEL_PROFESIONAL]);
#endif
badgegained=true;
}
}
I dopisujemy pod:
case LEVEL_PROFESIONAL:
{
if ((wroundstats[0]>4) && (wroundstats[2]>1) && (kills>199))//warunek zdobycia odznaki
{
g_PlayerBadges[id][BADGE_KNIFE]=LEVEL_NOWY;
#if defined KOLOROWY_SAY
ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_KNIFE][LEVEL_NOWY]);
#else
client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_KNIFE][LEVEL_NOWY]);
#endif
badgegained=true;
}
}
Nie zmieniłem warunku zdobycia odznaki, więc wymagania na LEVEL_NOWY są takie same jak na LEVEL_PROFESIONAL. Taką operację wykonujemy na każdej odznace, lecz w ten sposób.
1. Kopiujemy cały case LEVEL_EXPERT z konkretnej odznaki. 2. W skopiowanym case zamieniamy nazwe case LEVEL_EXPERT na case LEVEL_PROFESIONAL . 3. Wewnątrz skopiowanego case zamieniamy wszystkie LEVEL_PROFESIONAL na LEVEL_NOWY (czyli na naszą nazwę w const.inl).
Dobrze jeżeli już zedytowaliśmy każdy poziom w odznace to przejdźmy dalej.
Otwieramy menu.inl:
Szukamy:
public badgelevelmenu(id)
{
if (!get_pcvar_num(gPcvarBF2Active))
return PLUGIN_CONTINUE;
new menu = menu_create("\rBF2: Wybierz Poziom", "menu_handler");
menu_additem(menu, "\wZaden", "0", ADMIN_LEVEL);
menu_additem(menu, "\wPodstawowy", "1", ADMIN_LEVEL);
menu_additem(menu, "\wWeteran", "2", ADMIN_LEVEL);
menu_additem(menu, "\wExpert", "3", ADMIN_LEVEL);
menu_additem(menu, "\yProfesjonalista", "4", ADMIN_LEVEL);
menu_additem(menu, "\wWstecz", "5", ADMIN_LEVEL);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menuselection[id]=MENU_LEVEL;
menu_display(id, menu, 0);
return PLUGIN_CONTINUE;
}
I zamieniamy na:
public badgelevelmenu(id)
{
if (!get_pcvar_num(gPcvarBF2Active))
return PLUGIN_CONTINUE;
new menu = menu_create("\rBF2: Wybierz Poziom", "menu_handler");
menu_additem(menu, "\wZaden", "0", ADMIN_LEVEL);
menu_additem(menu, "\wPodstawowy", "1", ADMIN_LEVEL);
menu_additem(menu, "\wWeteran", "2", ADMIN_LEVEL);
menu_additem(menu, "\wExpert", "3", ADMIN_LEVEL);
menu_additem(menu, "\wProfesjonalista", "4", ADMIN_LEVEL);
menu_additem(menu, "\yMistrz", "5", ADMIN_LEVEL);
menu_additem(menu, "\wWstecz", "6", ADMIN_LEVEL);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menuselection[id]=MENU_LEVEL;
menu_display(id, menu, 0);
return PLUGIN_CONTINUE;
}
Otwieramy save.inl:
Szukamy:
for (new i = 0; i < MAX_BADGES; i++)
{
g_PlayerBadges[id][i] = clamp(g_PlayerBadges[id][i], 0, 4);
}
I zamieniamy na:
for (new i = 0; i < MAX_BADGES; i++)
{
g_PlayerBadges[id][i] = clamp(g_PlayerBadges[id][i], 0, 5);
}
Otwieramy badgepowers.inl:
Szukamy:
if ( sniperlevel )
{
if ( random_num(1, (5-sniperlevel)) == 1 )
{
new weaponName[32];
new weaponID = get_user_weapon(id);
if ( !get_pcvar_num(gPcvarFreeAwp) )
{
fm_give_item(id, "weapon_scout");
}
else
{
fm_give_item(id, "weapon_awp");
}
if ( weaponID )
{
get_weaponname(weaponID, weaponName, charsmax(weaponName));
engclient_cmd(id, weaponName);
}
givenitem = true;
}
}
I zamieniamy na:
if ( sniperlevel )
{
if ( random_num(1, (6-sniperlevel)) == 1 )
{
new weaponName[32];
new weaponID = get_user_weapon(id);
if ( !get_pcvar_num(gPcvarFreeAwp) )
{
fm_give_item(id, "weapon_scout");
}
else
{
fm_give_item(id, "weapon_awp");
}
if ( weaponID )
{
get_weaponname(weaponID, weaponName, charsmax(weaponName));
engclient_cmd(id, weaponName);
}
givenitem = true;
}
}
Szukamy:
if ( explosionlevel )
{
if ( random_num(1, (5-explosionlevel)) == 1 )
{
fm_give_item(id, "weapon_hegrenade");
givenitem = true;
}
}
I zamieniamy na:
if ( explosionlevel )
{
if ( random_num(1, (6-explosionlevel)) == 1 )
{
fm_give_item(id, "weapon_hegrenade");
givenitem = true;
}
}
Niestety nie testowałem tego na bazie danych, lecz jedynie na nvault. Mam nadzieję że nie będzie problemów.
Pozdrawiam i mam nadzieję że poradnik wam się spodobał.
Użytkownik Fili:P edytował ten post 07.11.2011 13:54