Nowy poziom odznak
Fili:P
07.11.2011
Cześć w tym poradniku pokaże jak dodać nowy poziom odznak do BF2 moda, czyli kiedy mamy przykładowo odznaki Profesjonalista w ..., Expert w ..., to w tym poradniku dodamy kolejny taki poziom. Też miałem kiedyś z tym problem i sam analizując kod go rozwiązałem. Było nawet nieźle kiedy się to wspomina, ale wolę wam pokazać co i jak. W tym poradniku edytujemy: [BattleField2] Battlefield 2 : Rank Mod PL v1.1.0 - AMXX.pl: Support AMX Mod X . No więc zaczynamy:
Otwieramy const.inl:
Szukamy:
I zamieniamy na:
LEVEL_NOWY to identyfikator nowego poziomu odznak.
Szukamy:
I zamieniamy na:
W moim przypadku dodaję poziom Mistrz.
Szukamy:
I zamieniamy na:
Otwieramy check.inl:
Szukamy:
I dopisujemy pod:
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.
Dobrze jeżeli już zedytowaliśmy każdy poziom w odznace to przejdźmy dalej.
Otwieramy menu.inl:
Szukamy:
I zamieniamy na:
Otwieramy save.inl:
Szukamy:
I zamieniamy na:
Otwieramy badgepowers.inl:
Szukamy:
I zamieniamy na:
Szukamy:
I zamieniamy na:
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
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
8ball1
07.11.2011
Cześć w tym poradniku pokaże jak dodać nowy poziom odznak do BF2 moda.
może napiszesz coś więcej o tym, bo zbytnio nie wiem o czy mówisz
jakie to są zmiany, na czym polegają, jaki jest efekt końcowy.
Użytkownik 8ball1 edytował ten post 07.11.2011 13:52
Fili:P
07.11.2011
Ok już edit.Cześć w tym poradniku pokaże jak dodać nowy poziom odznak do BF2 moda.
może napiszesz coś więcej o tym, bo zbytnio nie wiem o czy mówisz
jakie to są zmiany, na czym polegają, jaki jest efekt końcowy.
8ball1
07.11.2011
z tej edycji Twojego postu i tak nic nie zrozumiałem
ale sam doszedłem do wniosków
edycja ta pozwoli nam dodać nowy poziom odznak, tak jak piszesz.
czyli np w odznace za walkę nożem, mamy takie oto poziomy
będą nowe odznaki też w formie graficznej ??
bo jak już coś robić to dokładnie - zawsze jestem takiego zdania.
ale sam doszedłem do wniosków
edycja ta pozwoli nam dodać nowy poziom odznak, tak jak piszesz.
czyli np w odznace za walkę nożem, mamy takie oto poziomy
Podstawowy -> Weteran -> Expert -> Profesjonalista -> i nowa odznaka Mistrz
będą nowe odznaki też w formie graficznej ??
bo jak już coś robić to dokładnie - zawsze jestem takiego zdania.
Fili:P
01.12.2011
Zależy w jakim momencie nagroda ma być dana, np. start rundy. koniec rundy, dmg itp
Fili:P
15.05.2012
Pewniak że nie masz pojęcia o programowaniu w pawnie, a bierzesz się za mody.Hehehe ZRobiłem tak jak tutaj piszę i nie działa.... BARDZO DOBRE
Na 5tyk
21.05.2012
Taaa... Powiedz jakie błędy, może sma?W takim razie powiedz co tu nie gra??
Fili:P
01.12.2012
prawie, tak samo, o ile nie calkiemA jak na bazie danych ?
Może ktoś opisać .
hanyse 15.04.2013
ehh zrobiłem wszystko jak trzeba i nic nie działa nawet w menu nic się nie zmieniło ...