Witam dzis do zaprezentowania mam swoj dosc stary kod lecz, ktory z powodzeniem zaszczepil sie na moim dawnym serwerze codmod.
Dywizje co to jest ?
To nie jest party,misje czy jakis quest.
Gracz dolaczajac do jednej z 6 dywizji(zaleznych od lvl) dostaje dodatkowy exp wtedy gdy partner z naszej dywizji zabije przeciwnika i odwrotnie.
Kazdy z danej dywizji jezeli jest zywy oczywiscie dostaje dodatkowy exp za zabicie.
Pod:
new bool:freezetime = true;
Dodajemy:
new const nazwy_dywizji[][] = {"Brak", "Dywizja I", //1 "Dywizja II", //2 "Dywizja III", //3 "Dywizja IV", //4 "Dywizja V", //5 "Dywizja VI" }; new const lvl_dywizji[] = {0, 5, 15, 30, 50, 65, 85 }; new dywizja_gracza[33];
Dalej w plugin_init() dodajemy:
register_clcmd("say /dywizja", "MenuDywizja");
Nastepnie szukamy public SmiercGraczaPost(id, attacker, shouldgib)
I w tej klamrze
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker]) {
na koncu dodajemy:
new dywizja_doswiadczenie; for(new i=1;i<33;i++) { if(!is_user_alive(i)) continue; if(attacker == i) continue; if(get_user_team(attacker) != get_user_team(i)) continue; if(dywizja_gracza[attacker] == dywizja_gracza[i]) { if(dywizja_gracza[attacker] == 1) dywizja_doswiadczenie = 10; if(dywizja_gracza[attacker] == 2) dywizja_doswiadczenie = 30; if(dywizja_gracza[attacker] == 3) dywizja_doswiadczenie = 70; if(dywizja_gracza[attacker] == 4) dywizja_doswiadczenie = 150; if(dywizja_gracza[attacker] == 5) dywizja_doswiadczenie = 350; if(dywizja_gracza[attacker] == 6) dywizja_doswiadczenie = 800; //set_hudmessage(255, 212, 0, -1.0, 0.63, 1, 6.0, 4.0); //ShowSyncHudMsg(i, SyncHudObj4, "Dywizja +%i Expa", dywizja_doswiadczenie); //client_print(i,print_chat,"Dywizja +%i Expa", dywizja_doswiadczenie); // Powyzej znajduje sie kod na wyswietlenie informacji pierwsze 2 to hud a 3 linijka info na czacie poprzez usuniecie // odblokujemy wysylanie informacji o expie dywizji. doswiadczenie_gracza[i] += dywizja_doswiadczenie; } else { //set_hudmessage(255, 212, 0, -1.0, 0.63, 1, 6.0, 4.0); //ShowSyncHudMsg(attacker, SyncHudObj4, "Zaden gracz nie dolaczyl do Dywizji"); //client_print(attacker,print_chat,"Zaden gracz nie dolaczyl do Dywizji"); // To samo co wyzej. Odblokowac wedlug uznania } }
@up
Gdy odblokujemy wysylanie wiadomosci w hud nalezy dodac kolejny kanal hud.
Szukamy public UsunUmiejetnosci(id) i na koncu dodajemy:
dywizja_gracza[id] = 0;
Pod koniec szukamy public PokazInformacje(id) i zamieniamy caly public na ten.
public PokazInformacje(id) { id -= ZADANIE_POKAZ_INFORMACJE; if(!is_user_connected(id)) { remove_task(id+ZADANIE_POKAZ_INFORMACJE); return PLUGIN_CONTINUE; } if(!is_user_alive(id)) { new target = pev(id, pev_iuser2); if(!target) return PLUGIN_CONTINUE; set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2); ShowSyncHudMsg(id, SyncHudObj, "Klasa: %s^nDywizja: %s^nDoswiadczenie: %i / %i^nPoziom: %i^nPerk: %s", nazwy_klas[klasa_gracza[target]], nazwy_dywizji[dywizja_gracza[target]],doswiadczenie_gracza[target], PobierzDoswiadczeniePoziomu(poziom_gracza[target]), poziom_gracza[target], nazwy_perkow[perk_gracza[target]]); return PLUGIN_CONTINUE; } set_hudmessage(188, 176, 44, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, SyncHudObj, "[ Klasa: %s ]^n[ Dywizja: %s ]^n[ Doswiadczenie: %i / %i ]^n[ Poziom: %i ]^n[ Perk: %s ]", nazwy_klas[klasa_gracza[id]], nazwy_dywizji[dywizja_gracza[id]], doswiadczenie_gracza[id], PobierzDoswiadczeniePoziomu(poziom_gracza[id]), poziom_gracza[id], nazwy_perkow[perk_gracza[id]]); return PLUGIN_CONTINUE; }
Wyzej wersja jest dla zielonych.Jezeli ktos sie zna na pisaniu to wie co dodac i co zmienic jezeli nie chce podmieniac calego publica.
I na samym koncu moda dodajemy to.
public MenuDywizja(id) { new menu=menu_create("Dywzija","Dywzija_handler"); for(new i=1; i<sizeof nazwy_dywizji; i++) menu_additem(menu, nazwy_dywizji[i]); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu); } public Dywzija_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { if(poziom_gracza[id] < 5) client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]); else { client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]); dywizja_gracza[id] = 1 } } case 1: { if(poziom_gracza[id] < 15) client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]); else { client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]); dywizja_gracza[id] = 2 } } case 2: { if(poziom_gracza[id] < 30) client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]); else { client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]); dywizja_gracza[id] = 3 } } case 3: { if(poziom_gracza[id] < 50) client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]); else { client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]); dywizja_gracza[id] = 4 } } case 4: { if(poziom_gracza[id] < 65) client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]); else { client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]); dywizja_gracza[id] = 5 } } case 5: { if(poziom_gracza[id] < 85) client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]); else { client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]); dywizja_gracza[id] = 6 } } } return PLUGIN_CONTINUE; }
W razie jakis problemow badz ulepszenia,dodania,zmienienia cos w kodzie proszę pisac gdyz ten kod wycinal ze swojego codmoda.
ps. Poradnik zostal napisany przeze mnie na odpracowania warna