Dywizja CodMod
UTeam 09.06.2014
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
dredek
09.06.2014
Ciekawe ciekawe
Leci +
@edit
Możesz dodać do tego zapis dywizji...
Użytkownik dredek edytował ten post 09.06.2014 14:23
UTeam 09.06.2014
ex0
10.06.2014
Zapis przynależności do dywizji to moim zdaniem podstawa.
Ponadto zauważyłem, że po osiągnięciu pierwszego poziomu możliwości dołączenia odblokuje się nam nie tylko pierwszy ale stopień wyżej lub całokształt, to zauważyliśmy na dwóch różnych serwerach z moim kolegą.
Nie wiem czy to celowe, czy błąd w kodzie ale także mógłbyś nad tym zerknąć, bo bardziej ambitne osoby sobie z tym poradzą a jeżeli już robimy coś tu na forum to musimy się liczyć, że większość sobie nie poradzi ...
FunnyeRss
13.06.2014
Wgrałbyś mi to? Bo jak ja to wgrywam to od razu 17 errorów przy kompilacji.
QTM_CodMod.sma 41,46 KB 77 Ilość pobrań
UTeam 13.06.2014
UTeam 18.06.2014
Tutaj macie skrocona wersje Dywizja_handler z wykorzystaniem tablicy z levelami (ta pierwsza wersje pisalem dawno i tylko dla siebie wiec nie dopieszczalem kodu).
public Dywzija_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0..5: { if(poziom_gracza[id] < lvl_dywizji[item+1]) 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] = item+1 } } } return PLUGIN_CONTINUE; }
TSUBA
02.07.2014
Umiałby ktoś to przerobić że na przykład osiągamy 10 poziom dołączamy do dywizji numer 1 i po zmianie mapy nadal jesteśmy w tej dywizji? bo obecnie jest tak ze po dołączeniu i zmianie mapy na inną mamy Dywizja: Brak. Ewentualnie będę wdzięczny gdyby ktoś napisał jak to zmienić gdyż mam pewna koncepcje ulepszenia tego pluginu jednak nie potrafie sobie poradzić z tym kasowaniem dywizji po zmianie mapy.Z góry dzięki
ex0
02.07.2014
Umiałby ktoś to przerobić że na przykład osiągamy 10 poziom dołączamy do dywizji numer 1 i po zmianie mapy nadal jesteśmy w tej dywizji? bo obecnie jest tak ze po dołączeniu i zmianie mapy na inną mamy Dywizja: Brak. Ewentualnie będę wdzięczny gdyby ktoś napisał jak to zmienić gdyż mam pewna koncepcje ulepszenia tego pluginu jednak nie potrafie sobie poradzić z tym kasowaniem dywizji po zmianie mapy.Z góry Dzięki
Zapis nVault lub SQL jak kto woli wystarczy dodać, a poziomy potrzebne do osiągnięcia dywizji już musisz dodać sam, analogicznie do tego co jest w .sma
TSUBA
02.07.2014
Lost właśnie ja nie mam pojęcia jak dodać ten zapis nvault właśnie co do poziomów to ogarnę ale ten zapis dzięki któremu nie będzie po dołączeniu do drużyny i zmianie mapy widniał napis Dywizja: Brak...
Misiaczek ;c
06.07.2014
Ten temat został zamknięty przez moderatora.
Powód: Autor tematu zbanowany
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL