←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

BattleField2
Nowy poziom odznak

  • +
  • -
Fili:P - zdjęcie 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:

#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
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 07.11.2011

na bazie danych sie podobnie robi ;)
Odpowiedz

  • +
  • -
8ball1 - zdjęcie 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
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 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.

Ok już edit.
Odpowiedz

  • +
  • -
8ball1 - zdjęcie 8ball1 07.11.2011

z tej edycji Twojego postu i tak nic nie zrozumiałem :D
ale sam doszedłem do wniosków xD

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.
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 07.11.2011

To nie jest dział Webmastering, więć jedno nie ma nic do drugiego.
Odpowiedz

mlekowita - zdjęcie mlekowita 07.11.2011

Dobry poradnik przyda się na pewno nie jednemu !
Odpowiedz

  • +
  • -
TheMiX - zdjęcie TheMiX 23.11.2011

A co daje ten wyższy poziom ?
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 28.11.2011

Jest to wyższa ranga odznaki, więc i możemy dodać wyższą nagrodę.
Odpowiedz

Mac Pherson - zdjęcie Mac Pherson 30.11.2011

a jak dodać nową nagrodę
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 01.12.2011

Zależy w jakim momencie nagroda ma być dana, np. start rundy. koniec rundy, dmg itp
Odpowiedz

  • +
  • -
Cs-assassin - zdjęcie Cs-assassin 05.05.2012

Hehehe ZRobiłem tak jak tutaj piszę i nie działa.... BARDZO DOBRE :)
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 15.05.2012

Hehehe ZRobiłem tak jak tutaj piszę i nie działa.... BARDZO DOBRE :)

Pewniak że nie masz pojęcia o programowaniu w pawnie, a bierzesz się za mody.
Odpowiedz

  • +
  • -
Cs-assassin - zdjęcie Cs-assassin 19.05.2012

W takim razie powiedz co tu nie gra??
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 21.05.2012

W takim razie powiedz co tu nie gra??

Taaa... Powiedz jakie błędy, może sma?
Odpowiedz

  • +
  • -
what?? - zdjęcie what?? 26.11.2012

A jak na bazie danych ?
Może ktoś opisać .
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 01.12.2012

A jak na bazie danych ?
Może ktoś opisać .

prawie, tak samo, o ile nie calkiem
Odpowiedz

hanyse - zdjęcie hanyse 15.04.2013

ehh :( zrobiłem wszystko jak trzeba i nic nie działa nawet w menu nic się nie zmieniło ...

 

Odpowiedz